Facebook登录时应用程序配置错误:Android Facebook集成问题

Aru*_*ole 76 android facebook

我已将我的应用程序与Facebook集成,为此我使用的是Facebook的Graph API.我正在检索个人资料和朋友信息.它在我的设备上工作正常,它有Android 2.3(Gingerbread),但最近我的客户在他尝试通过我的应用程序连接到Facebook时遇到了问题.他的设备上安装了Android 4.0(Ice Cream Sandwich).当他点击应用程序上的一个按钮将他带到Facebook登录屏幕时,登录后他收到一条消息:

我的应用程序配置错误,无法登录Facebook.按Ok转回应用程序而不连接到Facebook.

Facebook错误消息

我不知道它是否与Android版本或什么相关的问题.

我该如何解决这个问题?

Jes*_*hen 90

我在Facebook工作,这是一个需要解决的重要问题.这个问题的另一个答案表明,禁用SSO非常糟糕,并且会将您的应用程序打开到可以窃取用户的Facebook凭据的恶意应用程序.

该hack在没有SSO的情况下向Facebook启动WebView对话框,用户必须在该对话框中键入其登录凭据.恶意应用可以轻松窃取此类信息.始终建议正确实施Facebook SSO以确保您的应用程序安全并保护用户的敏感数据.

在添加此错误消息之前,对话框将自动关闭而不会发出警告并以静默方式失败.我们添加了此错误消息,以便直观地显示您的Facebook应用信息中心中的应用配置存在问题.对于Android,如果你检查你的LogCat,你会看到在按下"Okay"之后,应该会显示一条错误消息,显示更多技术说明导致认证失败的原因.

例如,如果您使用我们的Hackbook示例并且未在源中提供您自己的APP_ID并且未将您的哈希键添加到仪表板,则在本机SSO对话框中按"Okay"后,您将在LogCat中看到此错误(如果Util.ENABLE_LOG设置为true):

D/Facebook-authorize(24739):登录失败:invalid_key:Android密钥不匹配.您的密钥"uk3udeH7vrOGNFH2FJjdJbdWJWI"与应用程序设置中指定的允许密钥不匹配.在http://www.facebook.com/developers上查看您的应用程序设置

我们添加了可视错误消息来帮助您.理论上,如果它开始正确实现,那么这不会破坏以前的实现.如果您看到此错误消息,则表示您未在仪表板上正确配置应用程序设置.
仔细检查您的Android类/包名称,Android哈希键等.如果您正确执行了所有操作,则不会看到此消息.

总之,您收到该错误消息,因为您的应用配置存在问题,例如,仪表板中的Android哈希键不匹配.在Facebook添加此错误消息之前,对话框将启动,然后自动关闭并失败.要解决此问题,请检查LogCat是否有任何错误消息,并确保正确实现了所有操作.您可以阅读我们的文档,以确保一切正确.请勿对此问题使用已接受的答案.

您还可以按照Facebook开发人员报告外部错误报告进行更多更新.

  • 嗨,这是来自Facebook的Shireesh.我同意Jesse的观点.请不要按照此处接受的答案.它绝对是您的应用程序的设置问题.记录错误并查看详细信息.它将帮助您纠正Android和iOS上的问题. (5认同)
  • 在我的情况下,它是不正确的ios app命名空间. (2认同)
  • 这家伙知道他在说什么.我遇到了同样的问题,发现我的令牌/密钥/由于openSSL版本不合适而导致其他内容不正确.一旦修好,这条消息消失了.谢谢杰西! (2认同)

pan*_*ear 15

尝试将其设置为:

首先下载OpenSSL(如果你有64位机器,你必须下载openssl-0.9.8e X64,而不是最新版本,openssl-0.9.8k X64,因为输出无效).提取文件,创建文件夹openssl,例如在C:/中复制文件.

找到你的keytoo之路.我的是C:\ Program Files\Java\jdk1.7.0_05\bin.

找到你的路径debug.keystore.如果你在Eclipse中打开,你可以看到路径是什么,菜单Window - > Preferences - > Android - > Build,你会看到Default Debug keystore: - 和路径.

找到你的路径openssl.我的是C:\ openssl8e\bin /.

打开cmd并输入:

"C:\ Program Files\Java\jdk1.7.0_05\bin\keytool"-exportcert -alias androiddebugkey -keystore"C:\ Users\User.android\debug.keystore"| "C:\ openssl8e\bin\openssl"sha1 -binary | "C:\ openssl8e\bin\openssl"base64

然后按Enter.

插入密码: android

您将获得您的哈希密钥debug.keystore.

导出已签名的APK并为应用程序创建密钥库时,只需将cmd debugkeystore别名替换为应用程序的别名,将密钥库路径替换为新创建的应用程序密钥库的路径,并为您插入密码app.keystore,并且您将获得已签名应用的新哈希密钥.

  • 一个对我有用的解决方案......**openssl-0.9.8e X64**非常重要. (2认同)
  • 我有这个问题,k版本产生了无效的哈希.谢谢你找到这个! (2认同)
  • 我爱你,这只是在最后帮助. (2认同)

Rei*_*nen 12

Jesse Chen的答案很好.Facebook SDK工作正常,不要破坏它.

我再次遇到这个问题,发现Facebook SDK文档已得到纠正,现在非常好.现在它指导如何调试和释放可以设置的哈希键; 就像它说的那样.

以下是我的老故事.缺少可以设置两个哈希键,一个用于调试,一个用于旧Play商店的已签名,已发布的应用程序.


我发现这个问题在我的Facebook的SDK文档中的情况.它引导我们使用调试密钥哈希并将其放入Facebook的应用程序配置中.哈希被引导以这种方式:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)

当你从Eclipse中调用或运行应用程序时,这很好用.

但是,如果您将应用程序发布到Andoid Play,则必须使用自己的发布者密钥导出已签名的.apk文件.有了这个.apk,Facebook应用程序控制台中的哈希就不再有效了!您必须获得开发人员密钥的哈希,如下所示:

keytool -exportcert -alias <developer alias> -keystore ~/.android/<developer keystore> | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)

并将其放在Facebook应用程序控制台中的Android Key Hash中,用于已发布的应用程序.之后,SSO再次对您签名的.apk文件正常工作.


rmc*_*mcc 8

从我可以收集到的,这是一个Facebook的问题,并已被报道.但是,问题仍然存在.

解决这个问题(在2.3.3上测试)是破解Facebook SDK,搜索2个授权方法并将DEFAULT_AUTH_ACTIVITY_CODE更改为FORCE_DIALOG_AUTH.这将禁用单点登录功能.

如果你愿意的话

public void authorize(Activity activity, String[] permissions,
            int activityCode, final DialogListener listener) 
Run Code Online (Sandbox Code Playgroud)

并禁用startSingleSignOn部分.最好不要这样做,因为最终Facebook会解决问题,而你只需要将旧的常数放回去.

编辑

该解决方案引发了安全问题.检查Jesse Chen的回答.

  • 大家好,我在Facebook工作,我们不建议你使用这个黑客.这是一个安全问题,可能会损害用户的Facebook凭据.我在下面发布了一个更全面的答案. (4认同)

9to*_*ios 5

我遇到了同样的问题,花了24小时和大量搜索我们使用这种方法来解决我的问题.

  1. 检查您的Xcode项目当前包标识符,例如:com.yourcompanyname.yourappname

  2. 使用相同的com.yourcompanyname.yourappname包标识符在Facebook中创建应用程序,请参阅附件.

在此输入图像描述