Uiwebview iOS应用程序中的Google OAuth保存到主屏幕

Uiwebview iOS应用程序中的Google OAuth保存到主屏幕,uiwebview,google-oauth,Uiwebview,Google Oauth,我有一个网站,我刚刚从谷歌AppEngine认证转移到OAuth。我第一次登录iPhone时就接到通知,UIWebViews中的OAuth将于4月20日停止 我遇到这个问题是因为我在iOS主屏幕上保存了一个网站的快捷方式。我如何解决这个问题?我想我可以让登录按钮为OAuth身份验证流打开一个新窗口,然后在身份验证完成后关闭新窗口。但对于用户已保存到主屏幕的应用程序来说,这似乎有点麻烦,检测用户是否在UIWebView中(以便我可以确定是否打开新窗口)可能不可靠,因为我试图匹配Google使用的

我有一个网站,我刚刚从谷歌AppEngine认证转移到OAuth。我第一次登录iPhone时就接到通知,UIWebViews中的OAuth将于4月20日停止

我遇到这个问题是因为我在iOS主屏幕上保存了一个网站的快捷方式。我如何解决这个问题?我想我可以让登录按钮为OAuth身份验证流打开一个新窗口,然后在身份验证完成后关闭新窗口。但对于用户已保存到主屏幕的应用程序来说,这似乎有点麻烦,检测用户是否在UIWebView中(以便我可以确定是否打开新窗口)可能不可靠,因为我试图匹配Google使用的检测结果


是否有人有经验或指导来分享如何让这个用户体验被接受

谷歌和苹果实施的限制阻止了这个问题的简单或优雅的解决方案。谷歌不会让你在“沙盒”浏览器中使用他们的OAuth服务。iphone上的“沙盒”浏览器不会与非沙盒浏览器共享任何数据(如cookie或本地存储)。因此,如果您打开一个新窗口来完成OAuth交换,那么就无法传达交换的完成情况,也无法将用户ID传输回“沙盒”浏览器会话

我能找到的解决此问题的唯一方法类似于Roku注册过程:允许用户在当前登录的浏览器中生成一次性代码,然后将该一次性代码输入“沙盒”浏览器。我选择使用有效期为2分钟的6位代码,并添加了一些额外的逻辑,以确保代码由同一个人生成和使用

这是可行的,但用户体验不如标准OAuth流好。我理解谷歌限制OAuth使用“沙盒”浏览器的原因。但它阻碍了网络应用的发展,因为它迫使用户通过额外的限制来使用他们保存到主屏幕上的PWA