Android 反应本机FBSDK无效密钥哈希。Keyhash已添加到developer.facebook,并且应用程序是实时的
首先,我知道这是一个重复的其他线程和问题,因为昨天我想我已经读了他们所有 现在,我正在尝试使用facebook在React原生应用程序上登录,因为现在我只是在android上运行它。我第一次测试它时,它就成功了 我已经将手机在错误中显示的密钥添加到developer.facebook.com,我也将我的应用程序改为生活在那里,我甚至尝试了人们粘贴在旧帖子上的代码:Android 反应本机FBSDK无效密钥哈希。Keyhash已添加到developer.facebook,并且应用程序是实时的,android,facebook,react-native,react-native-fbsdk,Android,Facebook,React Native,React Native Fbsdk,首先,我知道这是一个重复的其他线程和问题,因为昨天我想我已经读了他们所有 现在,我正在尝试使用facebook在React原生应用程序上登录,因为现在我只是在android上运行它。我第一次测试它时,它就成功了 我已经将手机在错误中显示的密钥添加到developer.facebook.com,我也将我的应用程序改为生活在那里,我甚至尝试了人们粘贴在旧帖子上的代码: try { PackageInfo info = getPackageManager().getPackageInf
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.blabla",
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) {
}
这是我用于登录本身的代码:
LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_likes']).then({
function(result) {
if (result.isCancelled) {
alert('Login was cancelled');
} else {
AccessToken.getCurrentAccessToken().then((accessTokenData) => {
const credential = firebase.auth.FacebookAuthProvider.credential(accessTokenData.accessToken);
firebase.auth().signInWithCredential(credential).then((result) =>{
alert('Inicio de sesión exitoso');
}, (error)=>{
console.log(error)
})
});
}
},
function(error) {
alert('Login failed with error: ' + error);
}
})
}
我得到了这个错误:
在这一点上,任何帮助都是非常感谢的,我非常绝望。我也有同样的问题。在虚拟设备上,一切都很好,但在真实的手机上,它不起作用,而我并没有从错误消息中添加哈希键。我知道问题出在我手机上安装的Facebook应用程序中,当我尝试登录我的应用程序时,它会在自己的哈希键上更改我应用程序中的哈希键。我也遇到了同样的问题 答案是,密钥散列在开发阶段总是会发生变化,因此,当您进入生产阶段时,我们需要创建另一个密钥散列 我看过这篇facebook开发者教程,现在它对我有用 只要试着运行下一个命令,keystore就会为您提供生产hashKey
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
keytool-exportcert-alias-keystore | openssl sha1-binary | openssl base64
这个命令在macOS上非常有效
只需使用相同的密钥库对已编译的APK进行签名
让我知道它是否适合您。您需要在Android FB应用程序的“密钥哈希”字段中添加一个密钥哈希(由您的Android发布密钥生成)。->这必须是一个评论,而不是一个实际的答案。