我已设置Firebase用户:
然后,根据following,我从服务器上的uid
(MG76cXdqhDNrx3BJktUq62...
)获取自定义令牌。
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>
就像它获得旧用户的uid
并创建该用户一样。但是,我希望只与与传递的uid
MG76cXdqhDNrx3BJktUq62...
相关联的用户登录。
任何建议都表示赞赏。
答案 0 :(得分:0)
解
这个问题对我来说是一个愚蠢的错误。
服务器代码正在缓存旧的自定义令牌,因为它正在保存在类实例上。通过在每次调用方法时删除自定义标记来修复。