Kal*_*ina 18 authorization credentials google-api access-token oauth-2.0
我正在尝试获取访问令牌以使用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();
Run Code Online (Sandbox Code Playgroud)
但是如何从此凭据获取访问令牌?credential.getAccessToken()回报null.我做错了什么,或者错过了一些步骤?
Kal*_*ina 50
得到它了.您必须在credential.getAccessToken()之前调用credential.refreshToken().它并没有在文档中的任何地方说明这一点,但这就是它的作用.
credential.refreshToken();
accessToken = credential.getAccessToken();
Run Code Online (Sandbox Code Playgroud)
如果ServiceAccountCredentials.fromStream()用于创建凭证对象,则可能也必须调用该createScoped()方法。
FileInputStream fileInputStream = new FileInputStream(KEY_FILE_PATH);
GoogleCredentials credentials = ServiceAccountCredentials.fromStream(fileInputStream);
credentials = credentials.createScoped(SCOPES);
AccessToken accessToken = credentials.refreshAccessToken();
Run Code Online (Sandbox Code Playgroud)
否则你会得到错误
java.io.IOException:未为服务帐户配置范围。应通过调用 createScoped 或将作用域传递给构造函数来指定作用域。
| 归档时间: |
|
| 查看次数: |
16671 次 |
| 最近记录: |