我将使用Create React App
构建的PWA(测试应用)保存到主屏幕后,使用chrome和 iOS 在 android 上以standalone
模式启动应用使用safari。然后在应用中我启动了Firebase方法signInWithPopup(GoogleProvider)
设备会询问我是否要使用Test App
或设备上安装的其他浏览器(chrome
,firefox
)打开操作。如果我选择使用我的Test App
打开,则会打开弹出窗口,然后选择正确的Google帐户。
错误:在选择Google帐户后,弹出窗口关闭,而不会重定向回Test App
。
如果我改为使用signInWithPopup(GoogleProvider)
浏览器而不是我的chrome
打开Firebase方法Test App
,则会打开弹出窗口以选择Google帐户,在我选择Google帐户后,弹出窗口会关闭并重定向暂时回到Test App
然后
错误:会返回chrome
标签,要求在显示加载指示符时选择Google帐户,然后挂起。
没有出现控制台错误或警告。
注1:如果我使用Windows 10 x64
将应用添加到Version 64.0.3259.0 (Official Build) canary (64-bit)
计算机上的主屏幕并且启动时,也会出现弹出未关闭并保持加载的错误独立窗口。
注2: signInWithPopup(Facebookprovider)
和signInWithPopup(Twitterprovider)
也会出现错误。如果我从主屏幕卸载应用并纯粹在浏览器中启动,则OAuth流程中的签名工作正常很好。
注3:在进一步排查后,当OAuth弹出窗口中需要用户输入时,似乎更具体地发生错误。
即,例如,如果用户之前通过Facebook授予Test App
权限,则流程正常,弹出窗口关闭。此外,如果只检测到一个google
帐户并且之前已经提供了应用OAuth权限,那么弹出窗口就可以正常工作。但如果设备上存在多个Google帐户,则用户必须输入选择哪个帐户才能通过 - > 登录,这会再次导致前面提到的错误。使用Twitter OAuth时,错误每次都会发生,因为twitter弹出窗口要求用户每次都选择Authorize App
。
更新:我认为这可能与谷歌浏览器最近从Webview对OAuth的更改有关。
Windows机器上的错误GIf :注意即使在授权应用程序后,twitter身份验证的弹出窗口也永远不会关闭,谷歌和脸谱OAuth也会出现同样的情况。
答案 0 :(得分:0)
你可以在app“manifest:standalone”的清单中坚持下去,然后像这样检测启动模式
Per_Mnd = ResLegeSheet.Range("F41:AD41")
答案 1 :(得分:0)
好消息,已在Chrome Canary中修复 https://bugs.chromium.org/p/chromium/issues/detail?id=771418#c84