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 版本?
react-native-fbsdk 不支持redirect_uri URL