我按照教程“使用 Facebook 登录”做了一个演示。
我在 MainFragment 中设置了这段代码:
LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
authButton.setReadPermissions(Arrays.asList("user_likes", "user_status"));
使用第二个帐户登录时遇到错误。我的意思是我之前用另一个帐户成功登录过。然后我退出,并尝试使用第二个帐户登录。
它显示一个错误对话框,显示消息“发生错误。请稍后再试”,标题为“错误”,右侧有一个“确定”按钮。
我试图看到错误添加下面的代码。我明白了,但我现在仍然不明白该怎么做。
authButton.setOnErrorListener(new OnErrorListener() {
@Override
public void onError(FacebookException error) {
Log.e("test", "error: "+error.getMessage());
}
});
它显示:
error: kError 1349040: Invalid Application ID: The provided Application ID is invalid.
但是当我之前尝试使用该帐户登录时,它又成功了。
在这个错误之前,我遇到过这个错误:
remote_app_id does not match stored id
我将设置中的密钥哈希更改为推荐的“ Android 版 Facebook SDK 入门”。添加代码:
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
使其登录成功。
另外,我尝试使用发布密钥并签署我的apk。结果是一样的。一个帐户可以,另一个不能。
现在,这几天,我又试了一次。错误消失了。只显示一个白色对话框,左上角只有一个删除按钮。
注意:我使用 Facebook SDK for Android V3.01。
[问题已解决]
有两个因素导致了这个问题。
首先,这是我的 Openssl 实用程序错误。然后我从使用 Facebook 登录中推荐的文档下载它
其次,默认情况下选中沙箱。正如Anton Roy在答案中所说,我在仪表板中取消选中了沙箱模式。