Google Analytics:从刷新令牌中获取访问令牌
Posted
技术标签:
【中文标题】Google Analytics:从刷新令牌中获取访问令牌【英文标题】:Google Analytics : Get access token from refresh token 【发布时间】:2015-01-08 10:14:12 【问题描述】:我正在使用 Java 中的谷歌分析 api。我有一个从刷新令牌中获取访问令牌的代码。我们将刷新令牌存储在数据库中,并在请求时检索访问令牌。
更改密码后,我们的请求令牌无效。因此,我通过浏览 url (https://developers.google.com/oauthplayground) 并按照说明生成了一个新的刷新令牌。我得到了新的刷新令牌。现在,当我执行代码以检索访问令牌时,它会引发空指针异常。以下是代码:
RefreshTokenRequest request = new GoogleRefreshTokenRequest(HTTP_TRANSPORT, JSON_FACTORY, refreshToken,
this.clientId, this.clientSecret);
TokenResponse response = request.execute();
execute方法被调用时,抛出如下异常:
java.lang.NullPointerException
at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkNotNull(Preconditions.java:191)
at com.google.api.client.util.Preconditions.checkNotNull(Preconditions.java:127)
at com.google.api.client.json.jackson2.JacksonFactory.createJsonParser(JacksonFactory.java:96)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:85)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:81)
at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:88)
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287)
at com.google.api.client.googleapis.auth.oauth2.GoogleRefreshTokenRequest.execute(GoogleRefreshTokenRequest.java:125)
at com.google.api.client.googleapis.auth.oauth2.GoogleRefreshTokenRequest.execute(GoogleRefreshTokenRequest.java:75)
at GARTest.main(GARTest.java:22)
谁能指出我哪里做错了?我可以从 google oAuth UI 获取访问令牌。
【问题讨论】:
恐怕这是 GoogleApi java 库的未解决问题:github.com/google/google-api-java-client/issues/932 请分享,如果您有任何解决方案。 您不应该使用 Oauthplayground 来获取 RefreshToken,这应该是您代码的一部分。此外,密码更改不会影响 OAuth2 RefreshToken,这是 OAuth 的重点。 【参考方案1】:这可能有你的答案:https://github.com/googleads/googleads-java-lib/issues/19
Github 用户 jyothi462 说他的 NPE 最终是由于使用了错误的客户端 ID 和密码。这也是我的问题。
该问题已通过更新错误消息得到解决,使其更具描述性。
【讨论】:
您引用的堆栈跟踪与描述中的堆栈跟踪非常不同。比较接近的是:github.com/google/google-api-java-client/issues/932以上是关于Google Analytics:从刷新令牌中获取访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Google Calendar API 获取刷新的令牌
如何从 Google YouTube Data API OAuth 2 iOS 获取刷新令牌
无法获取 Google Analytics API 的 oAuth2 访问令牌
新帐户上的 Google API(分析)访问令牌和刷新令牌错误