2012-06-27 97 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和客戶端密鑰,您將用戶引導到資源所有者的授權服務器。授權服務器和用戶互相驗證,您的應用程序將返回授權碼。您返回授權服務器並交換訪問令牌的授權碼。

如果訪問令牌是時間框,那麼當您發現訪問令牌已超時時,您將使用刷新令牌請求新的訪問令牌。