我收到此错误。当我尝试使用Facebook登录我的应用程序时。 当我第一次进行身份验证时,它将正常工作。在我取消申请后,现在尝试使用Facebook登录,我收到了此错误。
另一个问题:在device1中进行身份验证并尝试在设备2上使用Facebook登录时,也会出现同样的错误。
我发现的解决方案:当我从Facebook应用设置中移除应用身份验证时,它正在上面的方案中运行,但这不是一个很好的解决方案,我们可以告诉用户如何执行此操作?
btnFbLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(accessToken != null) {
boolean expires = accessToken.isExpired();
if(!expires) {
performFbLoginOrSignUp(accessToken);
}
} else {
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
callbackManager = CallbackManager.Factory.create();
if (loginButton != null) {
loginButton.setReadPermissions("public_profile", "email", "user_friends");
if (CommonUtil.isConnectingToInternet(LoginActivity.this)) {
loginButton.performClick();
loginButton.setPressed(true);
loginButton.invalidate();
loginButton.registerCallback(callbackManager, mCallBack);
loginButton.setPressed(false);
loginButton.invalidate();
}
}
}
}
});
在Facebook的例子中也有一个问题: GitHub link of Facebook example
重现的步骤 :
启动应用程序使用Facebook登录验证FB个人资料。
取消安装该应用并重新安装。
现在尝试使用Facebook登录。
答案 0 :(得分:4)
由于哈希键无效而发生错误。
我们可以使用以下命令创建哈希密钥,并在“设置”->“基本”->“ Android哈希密钥”下更新相同的here
keytool -exportcert -alias ADD_RELEASE_KEY_ALIASE_HERE -keystore ADD_UR_KEYSTORE_PATH_HERE | openssl sha1 -binary | openssl base64
如果需要,可以使用以下命令找到密钥库的发布密钥别名:
keytool -list -keystore ADD_UR_KEYSTORE_PATH_HERE
我也遇到了类似问题,例如使用上述HashKey,如果我直接将发行版APK安装到设备上,登录就可以正常工作,但是当我将APK上传到Play商店并从商店安装应用时,它会显示相同的登录名错误失败。解决方法如下:
答案 1 :(得分:3)
我也遇到了这个问题。在Facebook上更新你的密钥哈希
答案 2 :(得分:3)
我通过替换密钥哈希解决了相同的问题,
如何生成要发布的密钥哈希。 打开Chrome浏览器控制台,将十六进制映射键转换为base64
从Google Play控制台复制SHA1键。
> btoa('a1:43:d4:27:c8:04:rr:fr:2g:3b:tg:b5:et:c1:4a:1t:fr:f5:54:5f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "g5fGIBgB6noFO9ur78BdEr73KG6="
答案 3 :(得分:3)
解决方案是-------------- 如果您已经在手机中安装了Facebook应用,则设置LoginBehavior。loginButton.setLoginBehavior(LoginBehavior.WEB_ONLY);
答案 4 :(得分:2)
答案 5 :(得分:2)
只需将它丢给仍然遇到此问题的人即可。 我通过keytool创建的哈希值不正确。我通过以下操作对其进行了修复:
如果您已经将应用程序上载到了Play商店并启用了“通过Google Play进行应用程序签名”,那么有一种解决方案(至少对我有用):
这应该可以解决问题。
答案 6 :(得分:1)
出现此问题是因为您已经通过Facebook对应用程序进行了身份验证,并且您的代码每次都可能包含身份验证(查找和删除)。
请按照以下步骤操作:
转到Facebook设置。
删除您的应用。
确保您已在Facebook开发者页面中添加了Facebook登录,并且您已启用客户端OAuth登录。
转到您的代码并覆盖回调方法:
alloca
在Oncreate方法中,调用AccessToken:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Intent secondActivityIntent = new Intent(this, RedirectActivity.class);
startActivity(secondActivityIntent);
}
}
答案 7 :(得分:1)
对我来说,这个确切的错误是由于无效的权限字符串引起的。发生在iOS和Android。
答案 8 :(得分:0)
如果您正确设置了密钥哈希,则它可能与 facebook 应用程序有关。 如果设备上安装了 facebook 应用程序,这只会发生在 Android 上! (为了确保,只需卸载 fb 应用程序并重试。) 一种解决方案是使用网络进行身份验证并忽略本机 fb 应用程序。
答案 9 :(得分:0)
(在撰写本文时)对我来说,问题是直接在 Facebook登录->设置页中添加哈希。由于某些奇怪的原因,它无法正确保存它。
我通过转到快速入门并在其中一个步骤中添加哈希并点击保存来解决此问题。 (修复网页时,修复可能会过时)
该工具没有问题,它生成了正确的哈希。带有错误的Play商店哈希的人可能启用了Play商店签名或输入了错误的凭据。
答案 10 :(得分:0)
我今天在我的网站上遇到了同样的问题,然后意识到我正在使用旧的default_graph_version = v3.2。我已将其更改为最新版本:
default_graph_version = v4.0
现在,一切都会恢复正常。试试看。
答案 11 :(得分:0)
我遇到了同样的问题,我发现生成的要放在Facebook开发人员控制台中的哈希密钥不合适。我试图从另一台PC生成哈希密钥,它要求我输入该特定密钥库的密码,而在我的PC中则不是这种情况。因此,请确保在创建哈希密钥时要求您输入密钥存储密码,然后将该哈希密钥插入Facebook开发者控制台。
生成哈希密钥的命令:
keytool -exportcert -alias TYPE ALIAS HERE -keystore KEY_STORE_FILE_PATH_HERE | openssl sha1 -binary | openssl base64
答案 12 :(得分:0)
我遇到了同样的问题。
这是我的错误。
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
键入此命令时,它提示Enter keystore password:
。我给的是keyPassword
而不是storePassword
,它没有给出任何错误消息,而是生成了另一个哈希!
答案 13 :(得分:0)
我推荐这个
https://developers.facebook.com/docs/android/getting-started
或仅在onCreate()方法中添加以下代码,这将返回密钥哈希。
// 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) {
}
添加以上代码以检索密钥,该密钥可以存储
https://developers.facebook.com/docs/facebook-login/android
在这里。现在它将可以工作。
对我有用,希望也对您有用。
答案 14 :(得分:0)
我的问题实际上是使用哈希键,它无效。
我有完全相同的问题,很难诊断。原因是Facebook在首次登录时没有检查哈希密钥,看起来密钥是正确的,但实际上并非如此。其次,错误信息只是一种独特性。第三是决议:尝试以下链接,它帮助了我。
答案 15 :(得分:0)
我遇到了同样的问题。我完全定义了我的keyhashes,仍然面临同样的问题。我第一次无法登录。
解决我的问题是:
转到您应用的信息中心here
在左侧窗格的“产品”标签下,确保已添加Facebook登录。如果没有,请将其添加到那里。
如果您的所有其他配置都已到位。之后它完美无缺。
答案 16 :(得分:0)
我在Redmi Note 3上遇到了同样的问题。在三星上测试过。没问题。不知道Redmi是否具体。
答案 17 :(得分:0)
从Facebook(帐户)的用户设置中删除应用。
卸载该应用。
使用发行版或新的调试密钥库获取新哈希。使用此命令:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
在Facebook信息中心添加新哈希。