React Native FBSDK 无效的密钥哈希。 Keyhash 已添加到 developer.facebook 并且应用程序已上线

Posted

技术标签:

【中文标题】React Native FBSDK 无效的密钥哈希。 Keyhash 已添加到 developer.facebook 并且应用程序已上线【英文标题】:React Native FBSDK Invalid key hash. Keyhash has been added to developer.facebook and app is live 【发布时间】:2018-03-10 07:55:33 【问题描述】:

首先,我知道这是其他主题和问题的重复,从昨天开始我想我已经阅读了所有内容。

现在,我正在尝试在 React Native 应用程序上使用 facebook 登录,现在我只是在 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);
        
    )

我收到此错误:

在这一点上,任何帮助将不胜感激,我非常绝望。

【问题讨论】:

您需要在您的 Android FB 应用程序的“密钥哈希”字段中添加一个密钥哈希(由您的 Android 发布密钥生成)。 -> developers.facebook.com/docs/android/getting-started/… 我做错了,我们需要本地(项目> android)文件夹 debug.keystore 来获取正确的密钥。因为该项目是在另一台计算机上创建的,所以我的项目密钥与我的主 android/debug.keystore 密钥不同。大多数文件都建议获取全局文件,这就是我们完全错误的原因。 【参考方案1】:

我也有同样的问题。在虚拟设备上一切正常,但在真实手机上它不起作用,而我没有从错误消息中添加哈希键。我知道问题出在我手机上安装的 Facebook 应用程序中,当我尝试登录我的应用程序时,它会在我的应用程序上更改哈希键。

【讨论】:

这必须是评论而不是实际答案。【参考方案2】:

我遇到了同样的问题。

答案是,密钥哈希在开发阶段总是会改变,因此我们需要在您进入生产阶段时创建另一个密钥哈希。

我看过这个 facebook 开发者教程,现在它对我有用。

https://developers.facebook.com/docs/android/getting-started/#release-key-hash

只需尝试运行下一个命令,密钥库就会为您提供生产 hashKey。

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

此命令在 macOS 上运行良好。

只需使用相同的 keyStore 来签署已编译的 APK。

让我知道它是否适合你。

【讨论】:

以上是关于React Native FBSDK 无效的密钥哈希。 Keyhash 已添加到 developer.facebook 并且应用程序已上线的主要内容,如果未能解决你的问题,请参考以下文章

无法读取未定义的属性“canShow” - React-Native-FBSDK - iOS

如何找到与我的 react native 版本兼容的 fbsdk 版本?

将 fbsdk 正确集成到 react-native

react-native-fbsdk 不支持redirect_uri URL

让 react-native-fbsdk 与 CocoaPods 一起工作

React-native fbsdk 获取名称和电子邮件