【问题标题】:Google OAuth for websites in embedded browsers适用于嵌入式浏览器中网站的 Google OAuth
【发布时间】:2017-03-07 05:23:40
【问题描述】:

Google 不再允许嵌入 webview,因为它是用于 OAuth 登录的 disallowed_useragent。在大多数情况下,这完全没问题,并且有一种解决方法。但是,我遇到了这样一种情况,这会阻止网站使用 Web 服务器 OAuth 实现。

问题:

运行 Google PHP SDK 的 Nginx PHP 服务器,使用他们的 O-Auth 实现。这适用于除嵌入浏览器之外的所有内容。通常这是可以的,但是,如果用户尝试在使用嵌入式浏览器的应用程序中注册我们的网站,我们会收到 disallowed_useragent 错误(见底部图片)。这在 Android Facebook Messenger 中似乎不是问题,但可以在 iPhone 7 Plus Facebook Messenger 上复制。

当前研究:

我试图寻找明确的解决方法。例如。强制链接在主要手机浏览器(例如 Safari 应用程序)中打开的方法,但所有实现都指向应用程序端修复,这无法从网站完成。

问题:

当某些用户可能正在使用这些嵌入式浏览器时,我如何实施 Google Oauth,而不需要用户采取额外的手动操作(例如,在 Safari/Chrome 中打开)?

【问题讨论】:

  • 看看这个帖子,没有其他解决办法stackoverflow.com/questions/41829530/…
  • 从技术上讲,您可以设置 webview 的用户代理字符串以模仿桌面浏览器。
  • @Lukasz032 问题出在您无法控制的应用程序上,例如 Facebook Messenger...

标签: php mobile oauth google-oauth embedded-browser


【解决方案1】:

这个问题非常基于意见,但我会给你我的意见。

当某些用户可能正在使用这些嵌入式浏览器时,我应该如何实施 Google Oauth,而不需要用户采取额外的操作?

你真的不能。如果有人在 Facebook Messenger(嵌入式浏览器)中使用嵌入式浏览器来打开您的身份验证链接,则它不起作用。据我所知,没有办法强制或超越 Facebook Messenger 或任何其他使用其自己的嵌入式浏览器的应用程序。同样,这只是我的观点,但是有很多应用程序已经开始强迫他们的用户使用这些嵌入式浏览器。人们可能会质疑它们的安全性以及使用真实安装的浏览器会更好。您认为这就是 google 启用此功能的原因吗?

我想避免走上检测用户代理网页端的道路,并强制用户在 Safari 中打开链接。

我不知道这对我来说是不是一个相当不错的解决方案。可能感觉有点过头了,但如果它有效,那就去吧。

【讨论】:

    【解决方案2】:

    还有另一种情况会导致问题。 如果您有一个 Web 应用程序 - 而不是带有嵌入式浏览器的本机应用程序 - 用户始终可以选择将快捷方式放置到 iOS 中的 HomeScreen。 但是当他们去那个 HomeScreen 快捷方式运行应用程序时,它会从用户代理字符串中删除“Safari/6xx.x”。 现在,Google 将其视为“嵌入式浏览器”并拒绝访问 OAuth。

    所以 - “没有 Web-App-Capable”适合您!

    如果您关闭此元标记:

    <meta name="apple-mobile-web-app-capable" content="yes"/>
    

    在 iOS 中发生了两件事: 该网站现在在 Safari 浏览器窗口中打开,而不是更简洁的 Web-App 方法。 该网站使用完整的 Safari 用户代理,这将允许 OAuth 工作。

    真正令人遗憾的是,Google(拒绝非标准浏览器访问 OAuth)和 Apple(删除用户代理中用于主屏幕快捷方式的 Safari 版本)的决定已将我们推到了任何网站的角落,在 web-app 模式下可能看起来非常好,但无法使用来自 google 的 OAuth。

    我一直在尝试找到一种方法来欺骗用户代理,将 safari 版本添加到其中,以便在主屏幕网络应用程序中一切正常,但我认为我不能让它工作。 safari 似乎不允许您更改 navigator.userAgent ,除此之外,我不确定它会如何处理 WebApp 模式下的新弹出窗口。

    【讨论】:

    • 我遇到了这个问题。没有找到任何解决方案来验证“嵌入式 Safari”。
    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 2017-06-18
    • 2022-11-02
    • 1970-01-01
    • 2021-03-31
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多