Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 反应本机FBSDK无效密钥哈希。Keyhash已添加到developer.facebook,并且应用程序是实时的_Android_Facebook_React Native_React Native Fbsdk - Fatal编程技术网

Android 反应本机FBSDK无效密钥哈希。Keyhash已添加到developer.facebook,并且应用程序是实时的

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

首先,我知道这是一个重复的其他线程和问题,因为昨天我想我已经读了他们所有

现在,我正在尝试使用facebook在React原生应用程序上登录,因为现在我只是在android上运行它。我第一次测试它时,它就成功了

我已经将手机在错误中显示的密钥添加到developer.facebook.com,我也将我的应用程序改为生活在那里,我甚至尝试了人们粘贴在旧帖子上的代码:

    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发布密钥生成)。->这必须是一个评论,而不是一个实际的答案。