2011-12-29 14 views
1

紛争:グーグルのOAuth2のJavaコンタクトサービス - 私は、次の手順を使用してoath2で使用するための私のWebアプリケーションを登録したドキュメント

http://code.google.com/apis/accounts/docs/OAuth2.html

これは私のクライアントは、クライアントのIDを使用して作成されることを意味、クライアントシークレットとリダイレクトURI。

私はJSONで来る私は、アクセストークンを要求するために使用できるGoogleからのリクエストパラメータのコードを、受け取る

http://code.google.com/apis/accounts/docs/OAuth2WebServer.html

あたりのように私は自分のWebアプリケーションを設定したら

{ "access_tokenは": "1/fFAGRNJru1FTz70BzhT3Zg"、 "expires_in":3920、 "TOKEN_TYPE": "ベアラ"

}の線に沿ってフォーマット

これが完了すると、私は、ユーザーに代わってGoogleのAPIにアクセスするためのアクセストークンを使用することができます。

文書としてhttps://www.googleapis.com/oauth2/v1/userinfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg

これをGET単にリクエストパラメータとしてアクセストークンを渡すことによって行われます。

私は(この場合、Googleの連絡先)のJava APIを使用して上に移動するときしかし、私はHMAC-SHA1のドキュメントに以下を得る:RSA-SHA1

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters(); 
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY); 
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET); 
oauthParameters.setOAuthToken(ACCESS_TOKEN); 

PrivateKey privKey = getPrivateKey("/path/to/your/rsakey.pk8"); // See above for the defintion of getPrivateKey() 

DocsService client = new DocsService("yourCompany-YourAppName-v1"); 
client.setOAuthCredentials(oauthParameters, new OAuthRsaSha1Signer(privKey)); 

URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full"); 
DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class); 
for (DocumentListEntry entry : resultFeed.getEntries()) { 
    System.out.println(entry.getTitle().getPlainText()); 
} 
ため

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters(); 
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY); 
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET); 
oauthParameters.setOAuthToken(ACCESS_TOKEN); 
oauthParameters.setOAuthTokenSecret(TOKEN_SECRET); 

DocsService client = new DocsService("yourCompany-YourAppName-v1"); 
client.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer()); 

URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full"); 
DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class); 
for (DocumentListEntry entry : resultFeed.getEntries()) { 
    System.out.println(entry.getTitle().getPlainText()); 
} 

または、次の

まず、Javaラッパーではなく標準のhttpを実行していたら、私が提供する必要があるのはアクセストークンだけです。何か不足しているのですか?主にTOKEN_SECRET、ドキュメンテーションには言及されていません。また、CONSUMER_KEYとCONSUMER_SECRETを指定する必要はありません。私は彼らがクライアントIDとクライアントの秘密の代替名であると推測していますが、私は今なぜそれらを提供しなければならないのか分かりません。最後に、Google APIのコンソールを使用してアプリケーションを設定するときに、2つの異なる暗号化タイプについて何も言及されていませんでした。

答えて

1

表示するJavaコードの例は、OAuth 2.0(OAuth 2.0ではなく)に基づいています.OAuth 2.0では、OAuth 2.0で簡略化されたいくつかの暗号要件があります。 Google Contacts APIでOAuth 1.0が必要な場合もあります。参照:http://code.google.com/apis/contacts/docs/3.0/developers_guide.html#GettingStarted

+1

Oauthを使用しない実例がリンクされていますが、その下にOauth 2.0を使用するよう指示されています。ステップ6「アプリケーションはユーザーデータを要求します。リクエスト。"例は示していません。次に、その下にはオ​​アウの例はありません。私が指示するOauth 2.0のページでは、それはまっすぐなhttpを使用する例を示しており、java apisは使用していません。もう一度Googleを混乱させる。 – mogronalol

関連する問題