如何從GoogleCredential獲取訪問令牌



我正在尝试获取访问令牌以使用Google Play Android Developer API,并且使用Google API Java客户端文档示例走到了这一步:

HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
JsonFactory JSON_FACTORY = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
    .setTransport(HTTP_TRANSPORT)
    .setJsonFactory(JSON_FACTORY)
    .setServiceAccountId("...gserviceaccount.com")
    .setServiceAccountScopes("https://www.googleapis.com/auth/androidpublisher")
    .setServiceAccountPrivateKeyFromP12File(keyFile)
    .build();

但是,如何从此凭据获取访问令牌? credential.getAccessToken()返回null .我是否做错了什么,或者错过了一些步骤?

知道了。您必须在 credential.getAccessToken() 之前调用 credential.refreshToken()。它没有在文档中的任何地方说明这一点,但这就是它的作用。

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

如果使用ServiceAccountCredentials.fromStream()创建凭据对象,则可能还必须调用createScoped()方法。

    FileInputStream fileInputStream = new FileInputStream(KEY_FILE_PATH);
    GoogleCredentials credentials = ServiceAccountCredentials.fromStream(fileInputStream);
    credentials = credentials.createScoped(SCOPES);
    AccessToken accessToken = credentials.refreshAccessToken();

否则,您会收到错误

java.io.IOException:未为服务帐户配置的作用域。范围 应通过调用 createScoped 或将范围传递给 构造 函数。

相关内容

  • 没有找到相关文章

最新更新