Nic*_*ick 12 php mobile oauth embedded-browser google-oauth
谷歌不再允许嵌入式网页浏览,因为它是disallowed_useragent
OAuth登录的.对于大多数情况,这是完全正常的,并且有一种解决方法.但是,我遇到了这种情况,这会阻止网站使用Web服务器OAuth实现.
运行Google PHP SDK的Nginx PHP服务器,使用他们的O-Auth实现.这适用于除嵌入式浏览器之外的所有内容.通常这是可以的,但是,如果用户尝试在使用嵌入式浏览器的应用程序中注册我们的网站,我们会收到disallowed_useragent
错误(请参见下图).这在Android Facebook Messenger中似乎不是问题,但可以在iPhone 7 Plus Facebook Messenger上复制.
我试图寻找明确的解决方法.例如,强制链接在主要手机浏览器(例如Safari应用程序)中打开的方法,但所有实现都指向应用程序端修复,这是无法从网站完成的.
如果某些用户可能正在使用这些嵌入式浏览器,而不让用户采取额外的手动操作(例如在Safari/Chrome中打开),我该如何实施Google Oauth?
小智 6
还有另一种情况导致问题.如果您有一个Web应用程序 - 而不是具有嵌入式浏览器的本机应用程序 - 用户可以随时选择将快捷方式放入iOS中的HomeScreen.但当他们转到HomeScreen快捷方式运行应用程序时,它将从用户代理字符串中删除"Safari/6xx.x".现在,Google将其视为"嵌入式浏览器",并拒绝访问OAuth.
所以 - "没有Web-App-Capable"给你!
如果您关闭此元标记:
<meta name="apple-mobile-web-app-capable" content="yes"/>
Run Code Online (Sandbox Code Playgroud)
iOS中发生了两件事:网站现在在Safari浏览器窗口中打开,而不是更干净的Web-App方法.该网站使用完整的Safari useragent,这将允许OAuth工作.
真正的耻辱是谷歌的决定(拒绝非标准浏览器访问OAuth)和Apple(在主屏幕快捷方式的用户代理中删除Safari版本)已经支持我们进入任何看起来真正的网站的角落在网络应用程序模式不错,不能从谷歌利用这个OAuth.
我一直在试图找到一种欺骗用户代理的方法来将safari版本添加到其中,以便一切都可以在主屏幕web应用程序中运行,但我认为我不能让它工作.似乎safari不允许你更改navigator.userAgent,最重要的是,我不确定它将如何在WebApp模式下处理新的弹出窗口.
这个问题是非常基于意见的,但是我会给你我的意见。
如果某些用户可能正在使用这些嵌入式浏览器,而又不让用户采取额外的措施,该如何实施Google Oauth?
你真的不能。如果有人使用Facebook Messenger中的嵌入式浏览器(嵌入式浏览器)打开您的身份验证链接,则它将无法正常工作。据我所知,没有办法强迫或超越Facebook Messenger或任何其他使用自己的嵌入式浏览器的应用程序。同样,这只是我的意见,但是有很多应用程序开始迫使其用户使用这些嵌入式浏览器。人们可能会质疑它们的安全性,以及使用真正安装的浏览器会更好。您认为这就是Google启用此功能的原因吗?
我想避免走在检测用户代理Web端的道路上,而强迫用户在Safari中打开链接。
我不知道这对我来说是一个不错的解决方案。可能感觉有点像过度杀戮,但如果可行,那就去吧。