为了账号安全,请及时绑定邮箱和手机立即绑定

403错误-那是一个错误。错误:disallowed_useragent

403错误-那是一个错误。错误:disallowed_useragent

iOS
回首忆惘然 2019-12-04 14:38:20
我正在尝试为用户授权IOS应用程序中的Google日历API。我正在使用Google的OAuth2功能来验证用户身份。授权页面将打开,并显示403错误,描述如下:该用户代理被归类为嵌入式用户代理(也称为网络视图),因此不允许向Google发出OAuth授权请求。根据我们的政策,仅允许浏览器向Google提出授权请求。我们为本地应用程序提供了一些库和示例,以在浏览器中执行授权请求。我遵循此链接中提到的相同步骤:https : //developers.google.com/google-apps/calendar/quickstart/ios与其查看我的代码,不如查看以下链接:https : //developers.google.com/google-apps/calendar/quickstart/ios, 因为我在应用程序中复制粘贴了同样的东西。以下是我的clientId和keyChainItemName:static NSString *const kKeychainItemName = @"Google Calendar API";static NSString *const kClientID = @"954370342601-sgl8k0jrbqdeagea9v6vfu3tspte96ci.apps.googleusercontent.com";
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

在我的情况下,我使用的是本地网络视图来登录google,因此我发现了应该为Webview提供用户代理的方法。试试下面的代码,我相信它会起作用。


在应用程序didFinishLaunchingWithOptions中添加代码


目标C


 NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36", @"UserAgent", nil];

 [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];

斯威夫特3.0


let dictionaty = NSDictionary(object: "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36", forKey: "UserAgent" as NSCopying)

UserDefaults.standard.register(defaults: dictionaty)


查看完整回答
反对 回复 2019-12-04
?
守着一只汪

TA贡献1872条经验 获得超3个赞

<preference name="OverrideUserAgent" value="Mozilla/5.0 Google" />

我在cordova项目中也遇到了这个问题。您可以尝试:将它添加到您的config.xml中,对我有用。


查看完整回答
反对 回复 2019-12-04
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

如先前的答案所述,这SFSafariViewController是一种解决方法,但是对于仍WKWebView用于OAuth授权的用户,有一个简单的解决方法。


只需customUserAgent从列表更改为一个或将其设置为任意值即可。之后该disallowed_useragent错误将消失:


WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];

WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];

// Check for selector availability, as it is available only on iOS 9+

if ([webView respondsToSelector:@selector(setCustomUserAgent:)]) {

    webView.customUserAgent = @"MyCustomUserAgent";

}

如需更改User-Agent,UIWebView可以查看此答案。


但是要小心,因为某些后端代码可能取决于User-Agent标头值。


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 2056 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信