react-native-fbsdk-next Android端LoginButton触发OAuth错误问题求助
错误原因
该OAuth错误核心是Facebook开发者后台配置的Android端密钥哈希与当前运行的APK签名生成的密钥哈希不匹配,iOS功能正常是因为iOS端校验逻辑依赖Bundle ID,不需要配置密钥哈希,因此仅在Android端触发错误。
常见触发场景:
- 仅在FB后台配置了release签名对应的密钥哈希,本地开发用的debug签名哈希未录入
- 生成密钥哈希时命令输入错误,导致提交到后台的哈希值无效
- 多开发人员的本地debug签名不一致,没有把所有用到的签名哈希都录入FB后台
- 应用上架Google Play时开启了Google Play自动签名,没有把Google Play后台提供的签名哈希录入FB后台
解决方案
步骤1:获取当前APK对应的正确密钥哈希
根据你的使用场景执行对应命令生成哈希值:
- 本地debug签名(默认debug.keystore密码为
android):
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
- 正式release签名:替换命令中你的签名文件路径和别名后执行
keytool -exportcert -alias [你的release签名别名] -keystore [你的release签名文件绝对路径] | openssl sha1 -binary | openssl base64
- 已开启Google Play自动签名:直接到Google Play后台「应用完整性」页面复制SHA-1值,转换为Base64格式即可。
步骤2:录入哈希到Facebook开发者后台
登录Facebook开发者后台,进入对应应用的「设置」-「基本」页面,下拉找到Android配置区块,将步骤1生成的所有需要用到的密钥哈希填入「密钥散列」输入框,保存更改。
步骤3:额外校验项
- 确认Android配置区块的「包名」与你项目
AndroidManifest.xml中配置的package名完全一致 - 确认「主Activity类名」填写正确,通常为
[你的包名].MainActivity - 确认Facebook应用ID、客户端令牌已经正确配置到项目
res/values/strings.xml文件中
步骤4:代码优化
你当前代码中LoginManager.setLoginBehavior('native_with_fallback')的调用位置错误,该配置需要在登录触发前执行,放在登录完成回调中不会生效,建议调整到组件初始化阶段执行。
内容的提问来源于stack exchange,提问作者zeek
相关产品推荐
相关产品推荐

