firebase auth不适用于安装在Android桌面上的PWA

我已经构建了一个在浏览器中工作的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);
    });
}
点赞