2010-09-20 72 views
4

有誰知道如何使用google-api-java-client的雙腿OAuth? 我試圖訪問Google Apps Provisioning API以獲取特定域的用戶列表。谷歌api-java客戶端的兩腳OAuth

下不起作用

HttpTransport transport = GoogleTransport.create(); 
GoogleHeaders headers = (GoogleHeaders) transport.defaultHeaders; 
headers.setApplicationName(APPLICATION_NAME); 
headers.gdataVersion = GDATA_VERSION; 

OAuthHmacSigner signer = new OAuthHmacSigner(); 
signer.clientSharedSecret = CONSUMER_SECRET; 

OAuthParameters oauthParameters = new OAuthParameters(); 
oauthParameters.version = OAUTH_VERSION; 
oauthParameters.consumerKey = CONSUMER_KEY; 
oauthParameters.signer = signer; 
oauthParameters.signRequestsUsingAuthorizationHeader(transport); 

我得到的 「com.google.api.client.http.HttpResponseException:401未知授權頭」。 頭看起來像這樣

OAuth oauth_consumer_key="...", oauth_nonce="...", oauth_signature="...", oauth_signature_method="HMAC-SHA1", oauth_timestamp="...", oauth_version="1.0" 

我也試過以下沒有成功

GoogleOAuthDomainWideDelegation delegation = new GoogleOAuthDomainWideDelegation(); 
delegation.requestorId = REQUESTOR_ID; 
delegation.signRequests(transport, oauthParameters); 

任何想法? 在此先感謝。

+0

如果你不不介意,你會不會添加「google-api-java-client」標籤? – 2010-09-21 17:15:28

回答

0

大概你試圖在這裏得到一個未經授權的請求令牌?我沒有使用Google實現,但OAuth 1.0a規範說明您需要一個回調URL,而您沒有這個URL。作爲規範說缺少PARAM應該返回HTTP代碼400不是401

http://oauth.net/core/1.0a/#auth_step1

+0

感謝您的回答,但似乎問題出在我們的Google Apps設置上。代碼應該可以正常工作。 – user452499 2010-09-21 08:29:08

6

似乎沒有什麼錯的代碼,這可能是一個紅色的鯡魚。它實際上工作。 問題出在我們的Google Apps安裝程序。

當您訪問「管理此域的OAuth鍵值和密鑰」頁(https://www.google.com/a/cpanel/YOUR-DOMAIN/SetupOAuth), 並啓用「雙向OAuth訪問控制」,然後選擇 「允許訪問所有API」,它實際上並沒有允許訪問所有的API。

如果您訪問「管理API客戶端訪問」頁面 (https://www.google.com/a/cpanel/YOUR-DOMAIN/ManageOauthClients)後, 你會看到有類似的條目:

YOR-DOMAIN/CONSUMER-KEY "This client has access to all APIs" 

看來,這並不包括供應API。 只有在我們明確添加了Provisioning API後,代碼纔開始工作。 所以要啓用配置API,你也應該有這樣的事情在你的名單如下條目:

YOR-DOMAIN/CONSUMER-KEY Groups Provisioning (Read only) https://apps-apis.google.com/a/feeds/group/#readonly 
         User Provisioning (Read only) https://apps-apis.google.com/a/feeds/user/#readonly 

向其他人有同樣的問題:

http://www.gnegg.ch/2010/06/google-apps-provisioning-two-legged-oauth/

灑灑

相關問題