2012-06-27 96 views
0

我试图在iOS上使用RestKit访问Google Drive API,但我遇到了Oauth验证问题。RestKit Oauth 2 Google API

我一直在关注的Wiki页面,他们对这个问题在这里: Oauth Support On RestKit

基本上我们创建客户端这样的:

oauthClient = [RKClientOAuth clientWithClientID:[Client Id] secret:[Client Secret] delegate:[Your Delegate]]; 
[oauthClient setAuthorizationCode:[User Authorization Code]]; 
[oauthClient setAuthorizationURL:[Authorization Endpoint]]; 
[oauthClient setCallbackURL:[Your application callbackurl]]; 
[oauthClient validateAuthorizationCode]; 

我们收到的委托访问令牌方法

- (void)OAuthClient:(RKOAuthClient *)client didAcquireAccessToken:(NSString *)token 

在这里我们可以创建一个ObjectManager来使请求和所有其他操作

RKObjectManager* objectManager = [RKObjectManager sharedManager]; 
objectManager.client.baseURL = @"YOUR API URL"; 
objectManager.client.OAuth2AccessToken = @"YOUR ACCESS TOKEN"; 
objectManager.client.authenticationType = RKRequestAuthenticationTypeOAuth2; 

有了这些,我遇到了一些问题。

  • 首先是我们如何获得所需要的授权码在这里:

    [oauthClient setAuthorizationCode:[User Authorization Code]]; 
    

    我还没有与客户端ID,客户端密钥,授权端点,回调URL和API URL问题,因为它们主要提供在谷歌控制台API,但我不知道如何获得。

  • 其次是访问令牌将是一个时间访问令牌或刷新令牌,因为他们是在谷歌API中命名?如果它是第一个,我们如何获得刷新令牌?

我一直在试图与RestKit要做到这一点,但可能会有更好的办法,所以我开到其他的想法。我无法在Restkit中找到有关Oauth支持的许多信息。

由于事先

+0

您是否找到了解决方案呢?在使用Restkit时遇到了同样的问题。老实说,我真的很困惑,因为维基听起来像我需要在第一个请求中提供授权代码。然而就我所知,Oauth2是由auth服务器响应第一个请求响应授权代码,然后在第二个请求中使用它来最终获取访问令牌。 – Vlad

回答

0

你开始与你的客户ID和客户端密钥,您将用户引导到资源所有者的授权服务器。授权服务器和用户互相验证,您的应用程序将返回授权码。您返回授权服务器并交换访问令牌的授权码。

如果访问令牌是时间框,那么当您发现访问令牌已超时时,您将使用刷新令牌请求新的访问令牌。