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

我正在尝试为用户授权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";


回首忆惘然
浏览 2020回答 3
3回答

哆啦的时光机

在我的情况下,我使用的是本地网络视图来登录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.0let 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)

守着一只汪

<preference name="OverrideUserAgent" value="Mozilla/5.0 Google" />我在cordova项目中也遇到了这个问题。您可以尝试:将它添加到您的config.xml中,对我有用。

江户川乱折腾

如先前的答案所述,这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:)]) {&nbsp; &nbsp; webView.customUserAgent = @"MyCustomUserAgent";}如需更改User-Agent,UIWebView可以查看此答案。但是要小心,因为某些后端代码可能取决于User-Agent标头值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS