使用signInAndRetrieveDataWithCredential()的Firebase身份验证Facebook提供程序用法

时间:2019-05-23 13:23:04

标签: firebase react-native firebase-authentication

我正在尝试使用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

enter image description here

TLDR;尽管拥有有效的Facebook令牌,但似乎facebookProvider.credential(facebookToken)没有为signInAndRetrieveDataWithCredential()函数提供有效的令牌,从而导致“无效的IdP响应/凭据”错误。

如果有人以前使用过这些方法或有任何建议,将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果凭据格式错误或已过期,则抛出该异常,因此它返回无效的idp响应凭据。

由于不建议使用此方法,因此建议改用 firebase.auth.Auth.signInWithCredential 。而且,也许以这种方式,如果凭据有问题,您将获得更多详细信息

希望这会有所帮助!