如何解决Firebase Facebook授权出现invalid credentials 5XX报错问题
问题排查与解决方案
invalid credentials[ remote site 5XX from facebook.com for USER_INFO ]报错不需要额外对credential、token做初始化操作,你现有代码的初始化逻辑本身没有问题,报错是由配置或版本兼容问题导致,按以下步骤排查即可:
1 检查Facebook OAuth回调配置
登录Facebook开发者平台,进入对应应用的「Facebook登录 > 设置」页面,确认「有效的OAuth重定向URI」字段中已经添加Firebase的默认回调地址,格式为你的Firebase项目ID.firebaseapp.com/__/auth/handler,缺失该配置会导致Facebook侧拒绝授权请求返回5XX错误。
2 统一Firebase SDK版本
你当前引入的SDK版本不一致,firebase-app.js为8.4.1,firebase-analytics.js为8.4.2,跨版本混用会导致未知兼容问题,将所有SDK的版本号统一即可,修正后代码示例如下:
<script src="https://www.gstatic.com/firebasejs/8.4.2/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/8.4.2/firebase-analytics.js"></script> <script src="https://www.gstatic.com/firebasejs/8.4.2/firebase-auth.js"></script> <script src="https://www.gstatic.com/firebasejs/8.4.2/firebase-database.js"></script> <script> var config = { apiKey: "", authDomain: "", databaseURL: "", projectId: "", storageBucket: "", messagingSenderId: "", appId: "", measurementId: "" }; firebase.initializeApp(config); firebase.analytics() var database = firebase.database(); var provider = new firebase.auth.FacebookAuthProvider(); function fblogin() { firebase .auth() .signInWithPopup(provider) .then((result) => { var user = result.user; var credential = result.credential; var accessToken = credential.accessToken; }) .catch((error) => { console.log('完整报错信息:', error) // 新增完整错误打印,方便定位问题 var errorCode = error.code; alert(errorCode) var errorMessage = error.message; alert(errorMessage) var email = error.email; var credential = error.credential; }); } </script>
3 检查Facebook权限配置
如果你在授权时申请了public_profile、email之外的用户信息权限,必须先在Facebook开发者平台提交权限审核,审核通过后线上环境才能正常调用,未审核的权限在应用上线后调用会触发服务端错误。
4 校验配置项格式
重新核对Firebase控制台中填入的Facebook App ID、App Secret,确认没有多余的空格、换行符,复制粘贴时很容易带入不可见字符导致配置校验失败。
内容的提问来源于stack exchange,提问作者Tom Lee
相关产品推荐
相关产品推荐

