GooglePlayを使用するためのアクセストークンを取得しようとしていますAndroid Developer API、そしてこれまでのところ Google API Java Clientドキュメントの例 :
_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を呼び出すか、スコープをコンストラクターに渡すことによって指定する必要があります。