我正在尝试使用Firebase将Facebook登录到我的react-native应用程序。我已使用EXPO的集成Facebook支持成功地通过Facebook进行了身份验证,并获得了Facebook令牌。但是不幸的是,在使用此令牌登录Firebase时遇到问题,出现“无效的IdP响应/凭据”错误。
我已经使用完全相同的流程(但是使用Google Provider和令牌)进行了Google登录,并成功完成了。我还能够使用facebook令牌从facebook的rest API获取数据,以显示令牌的有效性。
//This function gives the error
doSignInWithFacebookCredential = (facebookToken) => {
const credential = this.facebookProvider.credential(facebookToken);
this.auth.signInAndRetrieveDataWithCredential(credential)
.then(authUser => {
alert("It worked!")
})
.catch(function(error) {
alert(error)
});
}
//Code used to verify facebook token
const response = await fetch(`https://graph.facebook.com/me?access_token=${facebookToken}`);
console.log(await response.json())
//This function works perfectly (The google sign-in with same flow)
doSignInWithGoogleCredential = (googleToken) => {
const credential = this.googleProvider.credential(googleToken);
console.log(credential)
this.auth.signInAndRetrieveDataWithCredential(credential)
.then(authUser => {
alert("It worked!")
})
.catch(function(error) {
alert(error)
});
}
在收到有效的Facebook令牌后,发生错误,导致捕获的警告提示
Error: Invalid IdP response/credential: http://localhost?id_token=$facebookToken&providerId=facebook.com
TLDR;尽管拥有有效的Facebook令牌,但似乎facebookProvider.credential(facebookToken)
没有为signInAndRetrieveDataWithCredential()
函数提供有效的令牌,从而导致“无效的IdP响应/凭据”错误。
如果有人以前使用过这些方法或有任何建议,将不胜感激。
答案 0 :(得分:2)
如果凭据格式错误或已过期,则抛出该异常,因此它返回无效的idp响应凭据。
由于不建议使用此方法,因此建议改用 firebase.auth.Auth.signInWithCredential 。而且,也许以这种方式,如果凭据有问题,您将获得更多详细信息
希望这会有所帮助!