繁体   English   中英

GoogleCredential缺少访问令牌

[英]GoogleCredential Missing Access Token

我正在使用服务帐户模型和Google的Java API来检索和修改用户。

我能够使用类似于Google示例的代码成功创建GoogleCredential对象:

GoogleCredential googleCredential = new GoogleCredentialBuilder()
    .setTransport(httpTransport)
    .setJsonFactory(jsonFactory)
    .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
    .setServiceAccountUser(SERVICE_ACCOUNT_USER)
    .setServiceAccountPrivateKeyFromP12File(P12_PRIVATE_KEY_FILE)
    .setServiceAccountScopes(Collections.singleton(GLOBAL_USER_AND_ALIAS_SCOPE)
    .build();

我在任何示例中都没有提到必须显式创建访问令牌,因此我一直假设上述代码可以解决这个问题。 真的吗?

之后,我成功创建了Directory的实例,然后尝试检索特定用户:

User user = new User();
user = directory.users().get(uid).execute();

失败,抛出NullPointerException。

当我在获取用户对象的调用之前检查GoogleCredential对象时,它似乎不包含访问令牌:

accessToken = null
refreshToken = null

我想念什么?

如何使用服务帐户模型获取访问令牌?

提前致谢。

您从哪里获得accessToken? 尝试

credential.refreshToken();
accessToken = credential.getAccessToken();

另外,您应该考虑在Oauth2 Playground中运行您的凭据。 如果它在操场上工作,那么您的实现可能有问题。

安迪是正确的。 Google Java API的示例省略了这一关键步骤。 在运行时,Google代码会抛出NullPointerException异常,而没有其他任何细节可以识别发生的位置。 逐步通过Eclipse中的调试器可以清楚地知道,令牌在GoogleCredential中为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM