我正在尝试使用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:)];
}
答案 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控制器: