Facebook登录应用程序配置错误:Android Facebook集成问题

Facebook登录应用程序配置错误:Android Facebook集成问题,android,facebook,Android,Facebook,我已经将我的应用程序与Facebook集成,为此我使用了Facebook的。我正在检索个人资料和朋友信息。在我的设备(姜饼)上运行良好,但最近我的客户在试图通过我的应用程序连接到Facebook时遇到了一个问题。他手机上有(冰淇淋三明治)。当他点击应用程序上的按钮进入Facebook登录屏幕时,登录后他会收到一条消息: 我的应用程序配置错误,无法登录Facebook。按OK返回应用程序而不连接Facebook 我不明白问题是什么,它是否与安卓版本或什么有关 如何解决此问题?几分钟前,我自己在4

我已经将我的应用程序与Facebook集成,为此我使用了Facebook的。我正在检索个人资料和朋友信息。在我的设备(姜饼)上运行良好,但最近我的客户在试图通过我的应用程序连接到Facebook时遇到了一个问题。他手机上有(冰淇淋三明治)。当他点击应用程序上的按钮进入Facebook登录屏幕时,登录后他会收到一条消息:

我的应用程序配置错误,无法登录Facebook。按OK返回应用程序而不连接Facebook

我不明白问题是什么,它是否与安卓版本或什么有关


如何解决此问题?

几分钟前,我自己在4.0.4上遇到了此问题,它似乎已经自行解决了。

据我所知,这是一个Facebook问题,已被报告。但是,问题依然存在

解决这个问题的一种方法(在2.3.3上测试)是在Facebook SDK上进行黑客攻击,搜索2authorize方法,并将默认身份验证活动代码更改为强制对话身份验证。这将禁用单一登录功能

如果你愿意的话

public void authorize(Activity activity, String[] permissions,
            int activityCode, final DialogListener listener) 
并禁用启动登录部分。最好不要这样做,因为Facebook最终会解决这个问题,你只需要把旧的常数放回去

编辑


这种解决方案会带来安全问题。检查Jesse Chen的回答。

我做了一个
Toast
异常,发现它引发了一个密钥不匹配异常,今天在
FB
应用程序页面添加了密钥,它工作正常

我在Facebook工作,这是一个需要解决的重要问题。这个问题的另一个答案是,禁用SSO非常糟糕,会使你的应用程序被恶意应用程序打开,从而窃取你用户的Facebook凭据。

黑客在没有SSO的情况下向Facebook启动WebView对话框,用户必须在该对话框中键入登录凭据。恶意应用程序可以很容易地窃取这些信息。始终建议正确实施Facebook SSO,以确保应用程序安全并保护用户的敏感数据

在添加此错误消息之前,对话框将自动关闭而不发出警告,并以静默方式失败。我们添加此错误消息是为了直观地显示Facebook应用程序仪表板中的应用程序配置存在问题。对于Android,如果您检查您的,您将看到在按下“OK”后,会出现一条错误消息,该消息将显示导致身份验证失败的更技术性的描述

例如,如果您使用我们的Hackbook示例,并且没有在源代码中提供您自己的APP_ID,并且没有将哈希键添加到仪表板,则在本机SSO对话框中按“OK”(如果Util.ENABLE_LOG设置为true)后,您将在LogCat中看到此错误:

D/Facebook授权(24739):登录失败:密钥无效:Android密钥不匹配。您的密钥“uk3udeH7vrOGNFH2FJjdJbdWJWI”与应用程序设置中指定的允许密钥不匹配。在上检查应用程序设置

我们添加了可视错误消息以帮助您。从理论上讲,如果从一开始就正确地实现了,这不会破坏以前的实现。如果您看到此错误消息,则表示您没有在上正确配置应用程序设置。
仔细检查你的Android类/包名、Android哈希键等。如果你做的一切都正确,你将不会看到此消息

总之,您收到该错误消息是因为您的应用程序配置存在问题,例如,仪表板中的Android哈希键不匹配。在Facebook添加此错误消息之前,对话框将启动,然后自动关闭并失败。若要修复此问题,请检查LogCat是否有任何错误消息,并确保所有内容都已正确实现。你可以仔细阅读,确保一切都正确无误。不要对这个问题使用公认的答案


您还可以按照Facebook开发者报告的更新信息进行操作。

我成功解决了Android上Facebook配置错误的问题,确保了发布版本的哈希键正确

要获取发布版本哈希密钥,请找到用于对应用程序签名的密钥,然后执行以下操作,插入密钥库别名的名称(不带括号)。如果您不知道您的别名,可以通过将您的应用导出为已签名的应用来找到,并且别名位于向导的第二页。同时插入密钥库的路径(不带括号)


尝试如下设置:

keytool -exportcert -alias <developer alias> -keystore ~/.android/<developer keystore> | openssl sha1 -binary | openssl base64
首先下载(如果您有64位计算机,则必须下载openssl-0.9.8e X64,而不是最新版本openssl-0.9.8k X64,因为输出将无效)。提取您的文件,创建文件夹
openssl
,例如在C:/中,然后将文件复制到那里

找到通往钥匙的路。我的是C:\ProgramFiles\Java\jdk1.7.0\U 05\bin

查找到debug.keystore的路径。如果在Eclipse中打开菜单窗口->首选项->Android->构建,您可以看到什么是路径,您将看到默认调试密钥库:-和路径

查找到
openssl
的路径。我的是C:\openssl8e\bin/

打开cmd并键入:

“C:\Program Files\Java\jdk1.7.0\u 05\bin\keytool”-exportcert-别名androiddebugkey-密钥库“C:\Users\User.android\debug.keystore”|“C:\openssl8e\bin\openssl”sha1-binary |“C:\openssl8e\bin\openssl”base64

A然后按回车键

插入密码:
android

您将获得
debug.keystore
的哈希键

当导出已签名的密钥库并为应用程序创建密钥库时,只需在中替换
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
keytool -exportcert -alias <developer alias> -keystore ~/.android/<developer keystore> | openssl sha1 -binary | openssl base64
/usr/lib/jvm/jdk1.7.0/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\<User>\.android\debug.keystore" > <Drive letter>:\debug.txt
openssl sha1 -binary "<Drive letter>:\debug.txt" > "<Drive letter>:\debug_sha.txt"
openssl base64 -in "<Drive letter>:\debug_sha.txt" > "<Drive letter>:\debug_base64.txt"