我已经将我的应用程序与脸谱网集成,为此我使用脸谱网的图形API。我正在检索个人资料和朋友信息。它在我的Android设备上运行良好
我的应用程序错误地配置为Facebook登录。按OK返回应用程序而不连接到Facebook。
我不明白是什么问题,无论是与Android版本有关还是什么。
我如何解决这个问题?
我在脸谱网工作,这是一个需要解决的重要问题。这个问题的另一个答案表明,禁用SSO非常糟糕,会让你的应用程序向恶意应用程序开放,这些恶意应用程序可以窃取你用户的脸谱网凭据。
黑客在没有SSO的情况下向Facebook启动WebView对话框,用户必须在该对话框中输入他们的登录凭据。恶意应用程序可以轻松窃取这些信息。始终建议正确实施FacebookSSO,以确保您的应用程序安全并保护用户的敏感数据。
在添加此错误消息之前,对话框将在没有警告的情况下自动关闭并静默失败。我们添加此错误消息是为了直观地显示您的Facebook应用仪表板中的应用配置存在问题。对于Android,如果您检查您的LogCat,您会看到按“OK”后,应该会有一条错误消息,该消息将显示更具技术性的说明,说明导致身份验证失败的原因。
例如,如果您使用我们的Hackbook示例,并且没有在源代码中提供您自己的APP_ID,并且没有将哈希键添加到仪表板,则在本机SSO对话框中按“OK”后,您会在LogCat中看到此错误(如果Util.ENABLE_LOG设置为true):
d/face-授权(24739):登录失败:invalid_key: Android密钥不匹配。您的密钥uk3udeH7vrOGNFH2FJjdJbdWJWI与应用程序设置中指定的允许密钥不匹配。请在http://www.facebook.com/developers检查您的应用程序设置
我们添加了可视化错误消息来帮助您。理论上,如果一开始就正确实现,这不会破坏以前的实现。如果您看到此错误消息,则意味着您没有在仪表板上正确配置您的应用程序设置。
仔细检查您的Android Class/Package名称、Android哈希键等。如果您做的一切都正确,您将不会看到此消息。
总之,您收到该错误消息是因为您的应用配置存在问题,例如,仪表板中的Android哈希键不匹配。在Facebook添加此错误消息之前,对话框将启动,然后自动关闭并失败。要解决此问题,请检查您的LogCat是否有任何错误消息,并确保您已正确实施所有内容。您可以阅读我们的留档以确保一切正确。不要使用此问题的公认答案。
您还可以关注Facebook开发人员报告的外部bug报告以获取更多更新。
尝试这样设置:
首先下载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-
找到您的openssl
路径。我的是C:\openssl8e\bin/。
打开cmd并键入:
"C:\Program Files\Java\jdk1.7.0_05\bin\keytools"-exportcert-alias androiddebug gkey-keystore"C:\用户\User.android\debug. keystore"|"C:\openssl8e\bin\openssl"sha1-二进制|"C:\openssl8e\bin\openssl"base64
然后按Enter。
插入密码:android
您将获得debug. keystore
的哈希密钥。
当您导出签名的APK并为应用程序创建密钥库时,只需将cmd调试密钥库别名替换为应用程序的别名,将密钥库路径替换为应用程序新创建的密钥库路径,并插入app. keystore
的密码,您将获得签名应用程序的新哈希密钥。
杰西·陈的回答很好。脸书SDK工作正常,不要打破它。
我再次遇到这个问题,发现脸谱网的SDK留档已经更正,现在很好。现在它正在指导如何调试和释放哈希键可以设置;照它说的做。
下面是我的老故事。缺少您可以为旧Play商店设置两个哈希键,一个用于调试,一个用于已签名、已发布的应用程序。
我在FacebookSDK的留档中发现了这个问题。它引导我们使用调试键哈希并将其放入Facebook的应用程序配置中。哈希是这样引导的:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
当您从Eclipse调试或运行应用程序时,这可以正常工作。
但是,如果您将应用程序发布到Andoid Play,则必须使用自己的发布者密钥来导出签名的. apk文件。使用该.apk,Facebook应用程序控制台中的哈希将不再有效!您必须像这样获取开发人员密钥的哈希:
keytool -exportcert -alias <developer alias> -keystore ~/.android/<developer keystore> | openssl sha1 -binary | openssl base64
并将其放在Facebook应用程序控制台中的Android密钥哈希中。之后,SSO再次适用于您签名的. apk文件。