React Native中的Firebase signInWithCustomToken

时间:2017-02-07 11:32:37

标签: javascript authentication react-native firebase-authentication

我在第一次登录时使用电子邮件和密码登录,并且在使用AsyncStoreage.setItem(“ACCESS_TOKEN”,令牌)添加localStoreage后,我有一个带有getToken()函数的令牌。我想用令牌刷新到app注册,我使用signInWithCustomToken(令牌),但是我有一个错误。它的'auth / invalid-custom-token'(你提供的令牌无效。)。我无法登录。

DataStore.js

onLogin: function (Data) {
    ApiRequest.login(Data)
        .then((authData) => {
            authData.getToken().then((token)=>{

                AccessToken.set(token)
                    .then(() => Actions.login.completed(authData));
            })
                    .catch((err) => Actions.login.failed(err))
        })
        .catch((err) => Actions.login.failed(err))
}

ApiRequest.Js

    login(data) { 
    // first.login data = (email.password) && after.login data=(token) 
    return new Promise((next, error) => {
        if (data && data.email && data.password) {
            this.firebase.auth().signInWithEmailAndPassword(data.email,data.password)
                .then((uData) => {;
                    next(uData)
                })
                .catch((err)=> error(err));
        } else {

            console.log("TOKEN:");
            console.log(data);
            this.firebase.auth().signInWithCustomToken(data)
                .then((authData)=>next(authData))
                .catch((err)=>{console.log("Error #232",err)})

       }
    });
}

AccessToken.Js

get(){
    return new Promise((next,error) => {
       if(this._accessToken) {
           console.log("LastToken");
           return next(this._accessToken);

       }
        AsyncStorage.getItem("ACCESS_TOKEN")
            .then((token)=>{
                if(token){
                    next(JSON.parse(token));
                }else{
                    error()
                }
            })
            .catch((err)=>error(err));
    });

}
set(token){
    this._accessToken=token;
    return AsyncStorage.setItem("ACCESS_TOKEN",JSON.stringify(token));
}

验证监听器

actions.auth.listen(function () {
AccessToken.get()
    .then((token) => actions.login(token))
    .catch((err) => actions.logout());
 })

令牌

  

... eyJhb Ckz95w

0 个答案:

没有答案