在Android上使用Facebook认证重定向到Facebook Android应用程序

4
我正在开发一个需要通过Facebook帐户进行身份验证的Android应用程序。 我使用了Facebook提供的教程项目来实现身份验证。
当手机上没有标准的Facebook应用程序时,身份验证可以正常工作并且我的应用程序也能正常运行。 然而,如果手机已经安装了Facebook应用程序,则我的应用程序停止工作并在身份验证后直接跳转到Facebook应用程序。
请问有人知道如何解决这个问题吗?

嗨,我正在开发一个需要通过Facebook账户进行身份验证的Android应用程序,你能给我提供一些示例代码吗?我只需要Facebook身份验证部分的代码即可。 - Sam
在[这里][1],您可以找到Facebook提供的示例代码。 [1]: https://github.com/facebook/facebook-android-sdk - rlc
1个回答

1

看起来你正在使用单点登录,这是正确的做法,如果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。

  • Openssl: 如果您没有openssl,请从这里安装:WindowsMAC。对于Mac,请按照这里的说明操作。

  • 无效的密钥哈希: 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。


1
我正在与问题的作者(Rafael)一起开发这个Android应用程序,问题是默认的Keystore密码。当我像你说的那样输入“android”时,它起作用了!在将我的应用程序发布到Android市场之前,我应该按照“签署您的应用程序”文档生成另一个密钥,对吗?PS:Rafael很快会接受你的答案,谢谢! - fjsj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接