在完成Google登录后,我很累从浏览页面导航到仪表板。将令牌存储在localStorage中后,promise中的导航不起作用。
在LoginService中,googlelogin()会在验证和存储后返回承诺。但是在收到返回的诺言的LoginComponent中,router.navigation无法正常工作。
loginwithgoogle(){
this.loginservice.googlelogin().then(()=>{
console.log("login");
this.route.navigate(["../Home"],{relativeTo:this.activatedroute});
});
}
googlelogin(){
return new Promise(()=>{
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then(function(result) {
var idToken = result.credential.idToken;
localStorage.setItem('token',idToken);
})
})
}
答案 0 :(得分:0)
您的诺言中缺少“成功”回叫电话
return new Promise((successCallback)=>{
.....yourcode
successCallback(someReturnValuePassedToThenCallback);
}
这就是为什么我更喜欢可观察的东西。
答案 1 :(得分:0)
无需使用Promise构造函数。只需通过firebase返回的承诺即可:
googlelogin() {
var provider = new firebase.auth.GoogleAuthProvider();
return firebase.auth().signInWithPopup(provider).then(/* process response */);
}