Firebase使用自定义令牌登录

时间:2017-03-06 09:21:13

标签: android firebase firebase-authentication

我已设置Firebase用户:

enter image description here

然后,根据following,我从服务器上的uidMG76cXdqhDNrx3BJktUq62...)获取自定义令牌。

FirebaseAuth.getInstance().createCustomToken(uid)
    .addOnSuccessListener(new OnSuccessListener<String>() {
        @Override
        public void onSuccess(String customToken) {
            // Send token back to client
        }
    });

然后,在客户端上,它返回自定义标记。我接着signInWithCustomToken,如下所示。

getUserWithToken(personModel: PersonModel): Promise<firebase.User> {
    return new Promise<firebase.User>((resolve) => {
        this.firebaseService.getCustomToken(personModel.uid).then((customToken: string) => {
            this.fireAuth.signInWithCustomToken(customToken).then((data: FirebaseAuthState) => {
                this.fireAuth.onAuthStateChanged((fireUser: firebase.User) => {
                    if (fireUser && fireUser.uid === personModel.uid) {
                        resolve(fireUser);
                    } else {
                        resolve(null);
                    }
                });
            }).catch((error) => {
                console.error('Error getting user with CustomeToken login for ' + personModel.uid, error);
                this.doAlert(error.message);
            });
        });
    });
}

但是,Firebase不是按预期使用上方(使用uid MG76cXdqhDNrx3BJktUq62...)用户登录,而是创建一个具有不同uid RoPBW0NKRoWEI1o8wgb9DD...的新用户:< / p>

enter image description here

就像它获得旧用户的uid并创建该用户一样。但是,我希望只与与传递的uid MG76cXdqhDNrx3BJktUq62...相关联的用户登录。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

这个问题对我来说是一个愚蠢的错误。

服务器代码正在缓存旧的自定义令牌,因为它正在保存在类实例上。通过在每次调用方法时删除自定义标记来修复。