我已使用以下说明注册了我的web应用程序以用于oath2:
http://code.google.com/apis/accounts/docs/OAuth2.html
这意味着我的客户端是使用客户端ID,客户端密钥和重定向URI创建的。
按照
配置我的网络应用程序http://code.google.com/apis/accounts/docs/OAuth2WebServer.html
我收到来自google的请求参数中的代码,然后我可以使用它来请求访问令牌,该令牌以JSON格式提供,其格式如下:
{ “ACCESS_TOKEN”: “1 / fFAGRNJru1FTz70BzhT3Zg”, “expires_in”:3920, “token_type”: “承载” }
完成此操作后,我可以使用该访问令牌代表用户访问google api:
获取https://www.googleapis.com/oauth2/v1/userinfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg
通过简单地将访问令牌作为请求参数传递来完成此操作。
然而,当我开始使用Java API(在这种情况下是谷歌联系人)时,我在HMAC-SHA1的文档中得到以下内容:
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());
}
或以下针对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());
}
首先,似乎如果我正在使用标准的http而不是java包装器,我需要提供的只是一个访问令牌。我错过了什么或者这些附加参数来自哪里?主要是TOKEN_SECRET,在文档中没有提到。也没有提到必须提供CONSUMER_KEY和CONSUMER_SECRET。我假设它们是客户端ID和客户端密钥的替代名称,但我不明白为什么我现在必须提供它们。最后,当使用谷歌API的控制台设置我的应用程序时,没有提到两种不同的加密类型,我将使用哪一种,我在这里错过了什么?
答案 0 :(得分:1)
您展示的Java代码示例基于OAuth 1.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 :(得分:0)