我已经构建了一个在浏览器中工作的SPA,在加载时它提供了一个auth选项,我点击谷歌登录并继续firebase auth流程,直到我有一个身份验证令牌等.
然后我可以切换PWA并正常使用.但是,如果我然后退出,我无法使用Google Auth再次使用该应用程序重新登录 – 无论我是在应用程序还是在Chrome中运行谷歌登录弹出窗口,都不会确认应用程序的确认,实际上它似乎崩溃了.
该问题与加载Google登录的附加标签有关.根据屏幕上的对话框,Android会询问我是在PWA中还是在Chrome中打开此选项卡.无论我选择哪个选项,流程都没有完成(由于断开连接,我在devtools中看不到任何有用的东西).
似乎唯一有效的流程是继续登录chrome,只有在完成后才切换到App版本.我可以在StackOverflow上写,但对我的用户来说非常复杂.
我该如何开始调试这种情况:
– 是否可以从PWA进行firebase auth;和/或
– 在用户登录浏览器后,有什么方法可以延迟Android弹出窗口添加到主屏幕吗?
很高兴共享代码,这是googlesignin函数 – 它没有做任何事情,因为我通常在我的代码中等待onAuthState消息,并且具有我需要的所有信息.
function signinGoogle() {
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then(function(result) {
// This gives you a Google Access Token. You can use it to access the Google API.
var token = result.credential.accessToken;
// The signed-in user info.
var user = result.user;
// ...
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// The email of the user's account used.
var email = error.email;
// The firebase.auth.AuthCredential type that was used.
var credential = error.credential;
// ...
});
}
最佳答案 根据@jasan的要求,我确实找到了基于@bojeil评论的解决方案
function signinGoogle(cb) {
var provider = new firebase.auth.GoogleAuthProvider();
// firebase.auth().signInWithPopup(provider).then(function(result) {
firebase.auth().signInWithRedirect(provider).then(function(result) {
console.log("Google signin successful")
// This gives you a Google Access Token. You can use it to access the Google API.
// var token = result.credential.accessToken;
// Send user to rest of program
cb(token)
})
.catch(function(error) {
logger(error);
});
}