在我的一个应用程序中,我需要从Facebook获取数据…我是这样做的:
我已经创建了应用ID。它成功登录,但注销后,我登录,然后它给我:
我做错了什么?我正在使用Facebook SDK…我已经在手机上安装了Facebook。它在模拟器中运行良好,但没有安装内置的Facebook应用程序。
这是我的代码:
if (FB_APP_ID == null) {
Builder alertBuilder = new Builder(this);
alertBuilder.setTitle("Warning");
alertBuilder.setMessage("A Facebook Applicaton ID must be " +
"specified before running this example: see App.java");
alertBuilder.create().show();
}
// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);
// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
dispatcher.runHandler("stream");
}
else {
dispatcher.runHandler("login");
}
我也有同样的问题。我确信这是由于非常小的错误,是的,它是!
我找到了解决方案:
当在我的计算机中生成调试哈希键时,我输入了我的系统密码。但密码应该是-
输入keystore密码:“android”。
这是我唯一的问题。
-----用于生成调试键哈希,使用此命令-
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
输入密钥库密码:'android'
-----要生成释放密钥哈希,使用命令-
keytool -exportcert -alias "alias of keystore" -keystore "Your path to the keystore when signing app" | openssl sha1 -binary | openssl base64
执行此命令后,提供您的密钥存储库密码。
尽管这个问题已经回答了很多有用的方法,我只是想补充说,当我遵循Rafal Maleks的答案(使用谷歌Play Console上的散列键),我无法使用应用程序签名SHA1密钥,仍然从Facebook得到了一般错误。相反,我需要使用来自上传证书部分的SHA-1证书指纹(就在谷歌Play Console的应用程序签名部分的下面)。否则,同样的过程;
从谷歌播放控制台的“上传证书”中拷贝SHA-1证书指纹
使用:http://tomeko.net/online_tools/hex_to_base64.php转换SHA-1并复制输出(base64)
将其粘贴到developer.facebook.com上的Key Hashes输入中并保存更改。
希望这个答案不是多余的,并将帮助那些不能让它与应用程序签名证书一起工作的人。
现在Facebook登录工作在我的应用程序在调试和发布模式。
Facebook使用的不是用于调试的默认密码和别名。你需要改变它,它会工作。
/usr/lib/jvm/jdk1.8.0_66/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
如果你没有修改任何默认密码,它应该是“android”。
您还可以在构建中配置它。gradle文件。但是生成散列时应该使用相同的别名密码:
android {
signingConfigs {
release {
storeFile file("~/.android/debug.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
}
我是这样解决这个问题的:
首先,您必须获得SHA-1值。有两种方法。
在Android Studio中获取SHA-1值。
点击它
点击签署报告
复制SHA-1的值
OR
从密钥存储文件中获取SHA-1值。
keytool -list -v -keystore keystore_file_name.jks -alias key0
复制SHA-1值到你的剪贴板,像这样:
CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84
并打开十六进制-> Base64字符串解码器将您的SHA-1值转换为Base64。
这正是Facebook所需要的。
获取生成的哈希值“********************=”,并将密钥哈希值复制到Facebook应用程序。