在我将使用构建的 PWA(测试应用程序)保存到主屏幕并在android上使用 chrome 和iOS使用 safari以模式Create React App
启动应用程序之后。然后在应用程序中,我启动 Firebase 方法,设备会询问我是否要使用或安装在设备上的其他浏览器打开操作,即. 如果我选择打开弹出窗口并选择正确的 Google 帐户。standalone
signInWithPopup(GoogleProvider)
Test App
chrome
firefox
Test App
错误:在 google 帐户选择后,弹出窗口关闭,而没有重定向回我的Test App
.
如果我改为signInWithPopup(GoogleProvider)
使用chrome
浏览器打开 Firebase 方法而不是我的弹出窗口以选择 google 帐户,并且在我选择 google 帐户后弹出窗口关闭并立即Test App
重定向回Test App
错误: 返回到chrome
选项卡,在显示加载指示器时要求选择谷歌帐户,然后就挂在那里。
没有出现控制台错误或警告。
注意1:如果我将应用程序添加到使用并作为独立窗口启动的Windows 10 x64
机器上的主屏幕上,也会出现弹出窗口未关闭并停留在加载中的错误。Version 64.0.3259.0 (Official Build) canary (64-bit)
注意 2:如果我从主屏幕卸载应用程序并纯粹在浏览器中启动,则该错误也会发生,signInWithPopup(Facebookprovider)
并且OAuth 流程的签名工作正常。signInWithPopup(Twitterprovider)
注意 3:经过进一步的故障排除后,当 OAuth 弹出窗口中需要用户输入时,似乎更具体地发生了错误。即,例如,如果用户之前已Test App
通过 Facebook 授予权限,则流程工作正常并且弹出窗口关闭。此外,如果仅检测到一个google
帐户并且之前已授予应用 OAuth 权限,则弹出窗口将正常工作。但是如果设备上存在多个 google 帐户,则用户必须输入选择通过哪个帐户登录 -->这会再次导致前面提到的错误。并且使用 Twitter OAuth 每次都会发生错误,因为 twitter 弹出窗口要求用户Authorize App
每次都选择。
更新:我相信这可能与 google chrome 最近从 Webview 对 OAuth 的更改有关。
Windows 机器上的错误GIf:注意 twitter auth 的弹出窗口永远不会关闭,即使在授权应用程序之后,google 和 facebook OAuth 也会发生同样的事情。