我已将我的应用程序与Facebook集成,为此我使用的是Facebook的Graph API.我正在检索个人资料和朋友信息.它在我的设备上工作正常,它有Android 2.3(Gingerbread),但最近我的客户在他尝试通过我的应用程序连接到Facebook时遇到了问题.他的设备上安装了Android 4.0(Ice Cream Sandwich).当他点击应用程序上的一个按钮将他带到Facebook登录屏幕时,登录后他收到一条消息:
我的应用程序配置错误,无法登录Facebook.按Ok转回应用程序而不连接到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开发人员报告的外部错误报告进行更多更新.
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,并且您将获得已签名应用的新哈希密钥.
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文件正常工作.
从我可以收集到的,这是一个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的回答.
我遇到了同样的问题,花了24小时和大量搜索我们使用这种方法来解决我的问题.
检查您的Xcode项目当前包标识符,例如:com.yourcompanyname.yourappname
使用相同的com.yourcompanyname.yourappname包标识符在Facebook中创建应用程序,请参阅附件.

| 归档时间: |
|
| 查看次数: |
51230 次 |
| 最近记录: |