Google+ JavaScript API 登录弹出窗口未在 iOS 上返回 Chrome

Posted

技术标签:

【中文标题】Google+ JavaScript API 登录弹出窗口未在 iOS 上返回 Chrome【英文标题】:Google+ JavaScript API Login Popup not returning Chrome on iOS 【发布时间】:2014-02-03 16:38:09 【问题描述】:

我正在使用 Google+ javascript API 登录按钮,它在 Windows 和 android 上的 Chrome 中运行良好。它在 iPad 和 iPhone 上的 Safari 中也能正常工作。但是,在 iPad 或 iPhone 上使用 Chrome 时,Google 登录的弹出选项卡在单击允许访问后永远不会返回。它似乎将表单提交到弹出选项卡,并且永远不会返回原始选项卡。有什么想法吗?

【问题讨论】:

【参考方案1】:

Google 知道此问题,但目前对此无能为力。归结为 window.open 在 UIWebview 中不起作用。

Safari 不受 App Store 规则的限制,就像所有第三方应用程序一样 是。 Apple 可以使用他们想要的任何 WebKit API,而我们是 受限于使用 UIWebView 的可能性。

他们鼓励任何遇到此问题的人向 Apple 提出错误。

你不能苹果做任何事,但任何受此影响的人都可以 向 Apple 提交关于 UIWebView 不支持的错误 window.open 和后续的跨站脚本,要清楚 传达对该支持的需求。

人们无法为现有的 Apple 添加投票或 cmets 错误报告,所以通常的建议是每个人都自己提交。

这是 Apple 中的错误报告 URL:https://bugreport.apple.com

这是one of the users 提供给 Apple 的示例错误:

总结:请添加对window.open及后续跨站的支持 脚本到 UIWebView。这是阻止 Facebook/Twitter/等登录 以 Chrome for ios 中的工作流程为例

复制步骤: 1.在一个tab中,打开一个运行代码var w = window.open(yourURL, null, null); 2. The page at yourURL should try to accesswindow.opener`的页面,比如postMessage回到原来的页面 3. 不要盈利。

预期结果:新窗口可以访问 window.opener。

实际结果:window.opener 未定义。

版本: 7.0.4

注意事项:

配置:Chrome 版本(来自“设置 > 关于 Google Chrome”): 19.0.1084.60 设备类型:iPad 3

您可以关注issue thread 获取更新。

【讨论】:

以上是关于Google+ JavaScript API 登录弹出窗口未在 iOS 上返回 Chrome的主要内容,如果未能解决你的问题,请参考以下文章

通过 Geolocation 和 Javascript API 登录网站的用户的位置,但违规错误

如何创建 Microsoft 帐户登录到我的网站,类似于 Google?

带有 Google 登录帐户的 Google API

Android 平台上的 Google+ API 和 Google+ 登录弃用和停用

使用 Google 登录通过 Firebase 签名后如何访问课堂 API

Google play 服务游戏静默登录错误 'com.google.android.gms.common.api.ApiException: 4:'