firebase auth与安装在Android桌面上的PWA不兼容

firebase auth与安装在Android桌面上的PWA不兼容,android,firebase-authentication,progressive-web-apps,Android,Firebase Authentication,Progressive Web Apps,我已经建立了一个SPA,它可以在浏览器中工作,在加载时,它提供了一个身份验证选项,我单击google登录,firebase身份验证流将继续,直到我拥有一个身份验证令牌等 然后我可以切换PWA并正常使用。但是,如果我随后注销,我就无法使用Google Auth再次登录该应用程序-无论我是让Google signin弹出窗口在应用程序中运行还是在Chrome中运行,都无法确认该应用程序,而且它似乎会崩溃 这个问题与谷歌登录的附加标签的加载有关。根据屏幕上的对话框,Android询问我是在PWA中还是

我已经建立了一个SPA,它可以在浏览器中工作,在加载时,它提供了一个身份验证选项,我单击google登录,firebase身份验证流将继续,直到我拥有一个身份验证令牌等

然后我可以切换PWA并正常使用。但是,如果我随后注销,我就无法使用Google Auth再次登录该应用程序-无论我是让Google signin弹出窗口在应用程序中运行还是在Chrome中运行,都无法确认该应用程序,而且它似乎会崩溃

这个问题与谷歌登录的附加标签的加载有关。根据屏幕上的对话框,Android询问我是在PWA中还是在Chrome中打开此选项卡。无论我选择哪个选项,流都不会完成(由于断开连接,我在devtools中看不到任何有用的东西)

唯一可行的流程是继续在chrome上登录,并且只有在登录完成后,才切换到应用程序版本。对我来说,在StackOverflow上写这个很好,但对我的用户来说非常复杂

如何开始调试这种情况: -是否可以从PWA进行firebase身份验证;和/或 -有没有办法延迟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);
    });
}

PWA可能意味着很多事情。请提供更多详情。尝试使用signInWithRedirect,signInWithPopup在许多PWA环境/框架中都有问题。@simon-h您解决了这个问题吗?我相信我也有同样的问题。我也没有首先看到你的问题,并且发布了一个好消息,在Chrome Canary中修复了我有同样的问题,尽管我使用的是firebaseui,它应该能够处理所有问题,所以我不必在signInWithPopup或signInWithPopup上乱来。如何使用firebaseui修复它?