【问题标题】:Java lightweight way to trade request- for access token at googleJava 轻量级交易请求的方式——在谷歌获取访问令牌
【发布时间】:2013-09-03 16:32:17
【问题描述】:

我通过浏览器 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);

Google 响应和错误抱怨和间接重定向 url。 api 控制台中没有设置重定向 url,之前的代码没有设置也可以正常工作。

我想要一个基于 Java 的轻量级解决方案,用请求交换访问令牌来进行基本的授权调用。不一定非要抄写员。

【问题讨论】:

    标签: oauth oauth-2.0 google-oauth scribe


    【解决方案1】:

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

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

    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

    【讨论】:

    • 是的,我已经在几个不同的 HTTP 库中构建了它,而且做起来并不复杂。
    • 好吧,我发现秘诀是 a) 将魔法值“postmessage”设置为 redirect_uri,b) 确保根本不设置任何范围。
    猜你喜欢
    • 2019-08-18
    • 2017-11-13
    • 2015-03-30
    • 2016-04-19
    • 2013-07-20
    • 2021-11-27
    • 2017-04-23
    • 2015-07-09
    • 2020-04-13
    相关资源
    最近更新 更多