如何修复因不允许使用者造成的功能受损?

时间:2017-06-03 14:01:15

标签: ios google-oauth user-agent wkwebview

我正在构建一个网络浏览器最近我在网站上尝试使用我的Google帐户登录时遇到了错误。

Screenshot

这很奇怪,因为我检查了我的应用程序和Safari的用户代理,它们都是相同的。

有什么建议吗?

更新

WKWebView嵌套在自定义UIViews树的3层深处。

这是初始化代码:

_webView = [[WKWebView alloc] init];
_webView.allowsBackForwardNavigationGestures = NO;
_webView.allowsLinkPreview = NO;
_webView.navigationDelegate = self;
_webView.UIDelegate = self;
_webView.frame = CGRectMake(0.0, 0.0, self.contentView.frame.size.width, self.contentView.frame.size.height);
[self.contentView addSubview:_webView];

1 个答案:

答案 0 :(得分:5)

来自Google Modernizing OAuth interactions in Native Apps for Better Usability and Security文章:

  

2017年4月20日,我们将开始使用网络视图阻止OAuth请求,这些请求适用于存在可行替代方案的平台上的所有OAuth客户端。

因此,Google现在只允许在普通浏览器中使用Google帐户登录,由于安全原因,它会在网络视图中对其进行限制,并为此目的推荐iOSAndroid的Google SDK。

但是,如果你仍然想使用WKWebView,可以在this回答中建议一个小技巧,设置customUserAgent以便它可以通过验证:

// Check for selector availability, as it is available only on iOS 9+
if ([_webView respondsToSelector:@selector(setCustomUserAgent:)]) {
    _webView.customUserAgent = @"MyCustomUserAgent";
}