无法通过iPhone应用程序中的Oauth 2.0获取谷歌+的访问令牌

时间:2012-06-07 14:27:57

标签: ios oauth-2.0 google-plus

我正在尝试使用iPhone应用程序中的Oauth 2.0访问Google+ API。为此我使用的是OauthConsumer库。我收到了未经授权的request_token和授权代码,但无法使用授权代码为access_token交换request_token。我收到错误为“invalid_request”。下面是代码片段,我做错了什么或缺少任何参数?

代码:

-(void)getAccessTokenWithAuthorizationCode:(NSString *)code
{

    NSURL *accessTokenURL = [NSURL     URLWithString:@"https://accounts.google.com/o/oauth2/token"];

    OAMutableURLRequest *accessRequest = [[OAMutableURLRequest alloc] initWithURL:accessTokenURL
                                                                    consumer:consumer
                                                                       token:requestToken
                                                                       realm:nil   // our service provider doesn't specify a realm
                                                           signatureProvider:nil]; // use the default method, HMAC-SHA1
    [accessRequest setHTTPMethod:@"POST"];

    OARequestParameter *authCode = [[OARequestParameter alloc] initWithName:@"code" value:code];
    OARequestParameter *redirectURI = [[OARequestParameter alloc] initWithName:@"redirect_uri" value:kRedirectURI];
    OARequestParameter *granType = [[OARequestParameter alloc] initWithName:@"grant_type" value:@"authorization_code"];

    [accessRequest setParameters:[NSArray arrayWithObjects:authCode, redirectURI, granType, nil]];

    OADataFetcher *fetcher = [[OADataFetcher alloc] init];

    [fetcher fetchDataWithRequest:accessRequest 
                     delegate:self 
            didFinishSelector:@selector(accessTokenTicket:didFinishWithData:) 
              didFailSelector:@selector(accessTokenTicket:didFailWithError:)];
} 

1 个答案:

答案 0 :(得分:1)

仅供参考 - 我对Objective-C不熟悉,但希望有一些关于OAuth的知识可以帮助您解决这个问题。

“授权请求令牌”在OAuth 1.0中使用 “授权码”用于OAuth 2.0

我没有看到OauthConsumer支持OAuth 2.0的任何内容

你问道: “我做错了什么或丢失任何参数?”

我认为您缺少客户端密钥,这是在OAuth 2.0中交换访问令牌的授权代码所必需的。有关为交换访问令牌交换授权码所需提供的内容的详细信息,请参阅Google OAuth 2.0 documentation

您可能需要查看Google Toolbox for Mac - OAuth 2控制器:

http://code.google.com/p/gtm-oauth2/wiki/Introduction