我正在开发一个需要通过 facebook 帐户进行身份验证的 Android 应用程序。对于身份验证,我使用了Facebook 提供的教程和项目
当手机没有安装标准的 facebook 应用程序时,身份验证工作完美,我的应用程序工作正常。另一方面,如果手机安装了 Facebook 应用程序,我的应用程序将停止工作,并在身份验证后直接进入 Facebook 应用程序。
有谁知道我该如何解决?
看来您正在使用单点登录,顺便说一句,这是正确的做法,如果手机上存在 Facebook 应用程序,它将通过 Facebook 应用程序授权,否则通过 webview 对话框重定向。您是否已将应用程序的 keyhash 添加到 facebook 开发人员的应用程序中?
有关 SSO 和 keyhash 的更多说明:
https://developers.facebook.com/docs/guides/mobile/#android
关于 keyhash 的几点说明:
密钥哈希参考文档:签署您的应用程序。
Keytool command not found 错误:Keytool 由标准 Android SDK 提供。如果出现“找不到命令”错误,则需要将其路径添加到全局“PATH”或转到文件夹以运行此命令。Windows 上的标准位置是 C:\Program Files (x86)\Java\jdk1.6.0\bin,对于 MAC,它的 /usr/bin
Openssl:如果您没有 openssl,请从此处安装它:Windows、MAC。对于 Mac,请按照此处的说明进行操作。
Invalid Key Hash:keytool 静默生成 keyhash,无论 debug.keystore 位置未知或密码错误。运行示例应用程序时,使用 adb logcat 跟踪错误。无效密钥返回的错误是Facebook-authorize(2631): Login failed: invalid_key。无效 keyhash 的视觉指示是 SSO 滑入和滑出 Facebook 应用程序而没有提示任何屏幕或 GDP 对话框。如果您收到此错误,则可能性很小:
keytool 找不到您的 debug.keystore 位置。确保提供正确的路径。一种了解方法是,keytool 应始终在其位置正确时要求输入密码。
您输入密码不正确。默认密钥库密码:“android”。
将 keyhash 添加到 Facebook 上的开发者应用程序时,您需要单击“保存更改”。
如果这一切都失败了,请尝试使用 cygwin 或 linux box 来生成 hashkey。