gpt4 book ai didi

java - 如何使用java从OpenID + OAuth的请求 token 获取访问 token

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

我正在尝试在我的 Google 应用程序中实现 OpenID + OAuth 混合协议(protocol)。我正在获取请求 token 。因此,作为联合登录中的文档,下一步是将请求 token 交换为访问 token 。

我尝试使用 OAuth java 库,但没有获得访问 token 。我正在尝试 3 足和 2 足方法均未成功。

有人成功地实现了混合协议(protocol)吗?

    GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(consumerKey);
oauthParameters.setOAuthConsumerSecret(consumerSecret);

calendarService = new CalendarService("marketplace-hello");
try {
calendarService.setOAuthCredentials(oauthParameters,
new OAuthHmacSha1Signer());
CalendarEventFeed results = calendarService.query(calendarFeedUrl,
CalendarFeed.class);
}
catch (OAuthException e)
{
throw new ServletException("Unable to initialize calendar service", e);
}

这会引发 com.google.gdata.client.authn.oauth.OAuthException:oauth_token 不存在。

oAuthParameters.setOAuthType(OAuthType.TWO_LEGGED_OAUTH);和 xoauth_requestor_id 属性到 feedURL 如果我在代码中添加这些行,我会收到 Invalid AuthSub Token 异常,我不知道为什么它说 Invalid AuthSub。

最佳答案

我的回答here可能对你有帮助。

或者使用您的 requestToken 尝试此操作:

import net.oauth.OAuth;
import net.oauth.OAuthAccessor;
import net.oauth.OAuthConsumer;
import net.oauth.OAuthMessage;
import net.oauth.OAuthServiceProvider;
import net.oauth.client.OAuthClient;
import net.oauth.client.httpclient4.HttpClient4;

public class Try {

public static void doit(String requestToken) throws Exception {

String requestUrl = "https://www.google.com/accounts/OAuthGetRequestToken";
String authorizeUrl = "https://www.google.com/accounts/OAuthAuthorizeToken";
String accessUrl = "https://www.google.com/accounts/OAuthGetAccessToken";
String consumerKey = "XXXXX";
String consumerSecret = "XXXXX";
String callbackUrl = "XXXXX";

OAuthServiceProvider provider = new OAuthServiceProvider(requestUrl,
authorizeUrl, accessUrl);

OAuthConsumer consumer = new OAuthConsumer(callbackUrl, consumerKey,
consumerSecret, provider);

consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.HMAC_SHA1);

OAuthClient client = new OAuthClient(new HttpClient4());

OAuthAccessor accessor = new OAuthAccessor(consumer);
accessor.requestToken = requestToken;

OAuthMessage result = client.getAccessToken(accessor, null, null);

System.out.println(accessor.accessToken);
System.out.println(accessor.tokenSecret);
}
}

关于java - 如何使用java从OpenID + OAuth的请求 token 获取访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3995217/

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