看起来你正在使用单点登录,这是正确的做法,如果Facebook应用程序存在于手机上,它将通过Facebook应用程序进行授权,否则将通过Webview对话框进行重定向。你是否已经将你的应用程序的keyhash添加到Facebook开发者应用程序中?
有关SSO和keyhash的更多说明,请参见此处:
https://developers.facebook.com/docs/guides/mobile/#android
关于keyhash的几点说明:密钥哈希参考文档: 签署您的应用程序。
Keytool命令未找到错误: Keytool由标准Android SDK提供。如果出现“命令未找到”错误,则需要将其路径添加到全局“PATH”中,或者进入文件夹以运行此命令。Windows上的标准位置为C:\Program Files (x86)\Java\jdk1.6.0\bin,而对于MAC,则为/usr/bin。
无效的密钥哈希: keytool会在未知的debug.keystore位置或密码错误的情况下静默生成keyhash。运行示例应用程序时,请使用adb logcat跟踪错误。无效密钥的返回错误是Facebook-authorize( 2631): Login failed: invalid_key。无效keyhash的视觉指示是SSO在不提示任何屏幕或GDP对话框的情况下滑入和滑出Facebook应用程序。如果出现此错误,则有几种可能性:
keytool找不到您的debug.keystore位置。确保您提供了正确的路径。一种方法是当keytool具有正确位置时,它应始终要求输入密码。
您输入的密码不正确。默认Keystore密码为“android”。
在将keyhash添加到Facebook上的开发人员应用程序时,您需要单击“保存更改”。
如果所有这些都失败,请尝试使用cygwin或linux box生成hashkey。