【发布时间】: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 的重点。
标签: java google-analytics-api google-oauth google-oauth-java-client