1

我已经实现了一个云端点,其中一些调用需要 Google 用户身份验证,现在我想使用 iOS 应用程序测试这些调用。到目前为止,我已经按照文档中的所有步骤进行操作,并且我已经设法让用户 OAUTH 登录从应用程序中工作,但是,当我随后尝试对本地开发服务器(本地主机:8888)进行 API 调用时),我收到以下错误:

无法使用方案 http 授权请求

根据我的阅读,auth 不适用于 http 方案并且需要 https。所以我的问题是:是否可以将 https 与本地开发服务器一起使用?或者,还有什么我遗漏的东西可以让我在本地环境中测试用户身份验证吗?

任何帮助是极大的赞赏。干杯。

4

1 回答 1

3

感谢您的帮助@bossylobster。我一直在本地开发服务器上使用 http,但是,真正的问题是 iOS OAuth2 库不会授权非 https 请求,这意味着我无法在本地测试经过身份验证的调用。

我最终在 iOS OAuth2 库的类中找到了一个标志,GTMOAuth2Authentication它允许该库授权所有请求(包括非 https):

// Property indicating if this object will authorize plain http request
// (as well as any non-https requests.) Default is NO, only requests with the
// scheme https are authorized, since security may be compromised if tokens
// are sent over the wire using an unencrypted protocol like http.
@property (assign) BOOL shouldAuthorizeAllRequests;

默认情况下,此标志设置为 false/NO。为了更新此标志以处理我的请求,我在发出 API 请求之前更改了 OAUTH 回调方法中的值:

- (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController
      finishedWithAuth:(GTMOAuth2Authentication *)auth
                 error:(NSError *)error {
    [self dismissViewControllerAnimated:YES completion:nil];

    if (error != nil) {
        // Authentication failed
        ...
    } else {
        // Authentication succeeded
        ...

        // TODO: for development purposes only to use non-https....remove for release.
        auth.shouldAuthorizeAllRequests = YES;

        // Make some API calls
        ...
    }
}

一旦我进行了这个更改,iOS 库就会向本地开发服务器授权非 https 请求。需要注意的是,这个标志应该只用于开发目的。

于 2013-08-03T08:44:30.157 回答