Java轻量级方式来交换谷歌访问令牌的请求

时间:2013-09-02 12:02:27

标签: oauth oauth-2.0 google-oauth scribe

我通过浏览器Javascript获取请求令牌。

以下Java代码可以将其用于访问令牌。

import com.google.api.client.googleapis.auth.oauth2.GoogleTokenResponse;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest;

GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(TRANSPORT, JSON_FACTORY, clientId, clientSecret, authCode, "postmessage").execute();

我的问题是谷歌图书馆电话的占用空间相当大。

因此,我尝试了scribe(Kobee1203 oauth 2.0 fork)。它对我不起作用:

  OAuthService service = new ServiceBuilder()
                                .provider(GoogleApi20.class)
                                .apiKey(apiKey)
                                .apiSecret(apiSecret)
                                .scope(SCOPE)
                                .grantType(OAuthConstants.GRANT_TYPE_AUTHORIZATION_CODE)
                                .accessType("offline")
                                .build();
  Verifier verifier = new Verifier(authcode);
  Token accessToken = service.getAccessToken(null, verifier);

谷歌回复和错误抱怨和间接重定向网址。在api控制台中没有设置重定向URL,前一代码在没有。

的情况下工作正常

我想要一个基于Java的轻量级解决方案来交换请求 - 访问令牌进行一次基本授权呼叫。它不一定非得抄写。

1 个答案:

答案 0 :(得分:0)

这只是一个REST URL,您可以直接从您的应用程序构建和调用。

如果您完成Oauth Playground https://developers.google.com/oauthplayground中的步骤,则可以看到网址和回复。例如,要将身份验证代码转换为刷新令牌,您可以调用

POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-length: 250
content-type: application/x-www-form-urlencoded
user-agent: google-oauth-playground
code=4%2FcQ7Nh2AZL3QgfynGKSloFTND3hlv.8jT4Txflqs8WXE-sT2ZLcbQTyOPFgQI&redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&client_id=407408718192.apps.googleusercontent.com&scope=&client_secret=************&grant_type=authorization_code

网址和回复记录在https://developers.google.com/accounts/docs/OAuth2