gpt4 book ai didi

java - Google oauth2 Java 联系人服务 - 文档中的冲突

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:19 26 4
gpt4 key购买 nike

我已按照以下说明注册了我的网络应用程序以与 oath2 一起使用:

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

这意味着我的客户端是使用客户端 ID、客户端 key 和重定向 URI 创建的。

一旦我按照

配置了我的网络应用程序

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

我收到来自 google 的请求参数中的代码,然后我可以使用该代码来请求访问 token ,该 token 采用 JSON 格式,格式如下:

{ "access_token":"1/fFAGRNJru1FTz70BzhT3Zg", “过期时间”:3920, "token_type":"承载者"}

完成此操作后,我可以使用该访问 token 代表用户访问 google api:

获取https://www.googleapis.com/oauth2/v1/userinfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg

按照记录,这是通过简单地将访问 token 作为请求参数传递来完成的。

但是,当我开始使用 Java API(在本例中为 google 联系人)时,我在 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 。我是否遗漏了某些内容或者这些附加参数从何而来?主要是TOKEN_SECRET,文档中没有提及。也没有提到必须提供 CONSUMER_KEY 和 CONSUMER_SECRET。我假设它们是客户端 ID 和客户端 key 的替代名称,但我不明白为什么我现在必须提供它们。最后,当使用 google API 的控制台设置我的应用程序时,没有提及两种不同的加密类型,以及我将使用哪一种,我在这里是否还遗漏了一些东西?

最佳答案

您显示的 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

关于java - Google oauth2 Java 联系人服务 - 文档中的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8671014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com