2010-09-20 31 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/

洒洒

相关问题