微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 play-service-auth 令牌在 Android 中通过 Google Analytics Data API 进行身份验证

如何解决使用 play-service-auth 令牌在 Android 中通过 Google Analytics Data API 进行身份验证

我想使用 Java 客户端 API 调用 Google Analytics Data API 和 Google Analytics Management API。 在示例中,他们使用在 json 文件中配置的服务帐户。

由于我也在集成其他 Google Api,因此我使用 Google Play 服务身份验证进行身份验证(使用 OAuth 2),因此我已经有了一个我想使用的访问令牌。但我不知道如何将其传递给 Google Analytics 客户端。

我已经试过了:

GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(mContext);
String tokenString = GoogleAuthUtil.getToken(mContext,account.getAccount(),"oauth2:https://www.googleapis.com/auth/analytics.readonly");
Accesstoken token = new Accesstoken(tokenString,// Set expiration time in one hour,// as credentials are created every time
                                    // this method is called.
                                    new Date(System.currentTimeMillis() + 60 * 60 * 1000)));
Credentials credentials = OAuth2Credentials.newBuilder().setAccesstoken(token).build();
ClientContext clientContext = ClientContext.newBuilder().setCredentials(credentials).build();
BetaAnalyticsDataClient client = BetaAnalyticsDataClient.create(BetaAnalyticsDataSettings.newBuilder(clientContext).build());

问题是客户端上下文似乎没有认值,所以我需要向它提供所有我不知道的信息(并且不想那样做,因为使用了认值,当我没有放置自己的客户端上下文时。所以我也想使用相同的认值)。所以这以 IllegalStateException (Missing required properties: defaultCallContext).

结尾

有没有办法获取认客户端上下文,然后只覆盖凭据,或者有没有其他方法可以传递我自己的 OAuth 凭据?

顺便说一下,分析数据和管理 API 的行为是相同的。所以我想同样的解决方案可以解决这两个问题。

解决方法

奥林,

BetaAnalyticsDataClient reference documentation 包含以下显示如何覆盖凭据的片段:

 BetaAnalyticsDataSettings betaAnalyticsDataSettings =
     BetaAnalyticsDataSettings.newBuilder()
         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
         .build();
 BetaAnalyticsDataClient betaAnalyticsDataClient =
     BetaAnalyticsDataClient.create(betaAnalyticsDataSettings);

如果这有帮助,请告诉我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。