Google PlayにはGoogle Play Developer API が用意されていて、APIを使ってこれらの操作が可能になります。
- Publishing API
アプリのアップロード、公開、およびその他の公開関連のタスクを実行できる - Subscriptions and In-App Purchases API
アプリ内購入と定期購入を管理できる - Reporting API
Android Vitals
アプリの品質に関する情報を取得できる - Reply to Reviews API
アプリのレビューの取得と返信を行える - Permissions API
Google Play Console 内での権限の管理を自動化できる - Play Games Services Management API
REST 呼び出しを発行して、Google Play ゲームサービス機能の基盤となるメタデータをプログラムで管理できる - Voided Purchases API
ユーザーが取り消した購入に関連付けられている注文のリストが提供される
この記事ではこれらのAPIを利用するためのAccess Token取得を目的としています。
認証情報の作成
大まかな流れとして、Google Play API用のGCPプロジェクトを作成、紐付けしてOAuthのサービスアカウントの設定、そのアカウントを使ってAccess Tokenの取得を行います。
方法は2つあって
- OAuthクライアントを使う方法
- サービスアカウントを使う方法
があります。
サービスアカウントはセキュリティの影響範囲が広いため今回はOAuthクライアントを使う方法を紹介します。
Google Play APIの有効化
Google Play Console > 設定 > APIアクセス
からGoogle Play Android Developer APIをオンにするとGCPのプロジェクト一覧にGoogle Play Android(Console) Developer が作成されます。
OAuthクライアントの作成
上記の設定を行うと下の方にOAuthクライアントの設定が増えます。
まずはOAuth同意画面の設定を行います。
一番下に表示されているOAuth同意画面設定からでも良いですし、
GCPのGoogle Play Android Developerのプロジェクトを選択 > APIとサービス > OAuth同意画面
から設定しても大丈夫です。
次に認証情報の作成をしてクライアントIDとクライアントシークレットを取得します。
GCPのGoogle Play Android Developerのプロジェクトを選択 > 認証情報 > 認証情報を作成 > OAuthクライアントID
ウェブアプリケーションで作成します。
作成が終わるとクライアントIDとクライアントシークレットが取得できますのでメモっておきましょう。
(クライアントシークレットはAccess Token取得時に必要になります。)
Access Tokenの取得
上記の手順で取得した、クライアントIDを使ってAccess Tokenを取得します。
Refresh Tokenの取得
用途にもよるのですが、今回はscopeをAndroid Publisherにしています。 今回は個人で使うため、リダイレクトURLはここで何でもいいのでエンコードしたgoogle.com のURLにしました。
ブラウザで以下のURLにアクセスします。
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&client_id=[client id]&redirect_uri=https%3A%2F%2Fgoogle.com
任意のアカウントで同意をします。
そうすると、このようなURLにリダイレクトされます。
このURLの code=
以下がRefresh Tokenになります。
https://www.google.com/?code=[Refresh token]&scope=https://www.googleapis.com/auth/androidpublisher
Access Tokenの取得
上記のRefresh TokenとクライアントID, クライアントシークレットを使ってPOSTします。
curl -X POST https://accounts.google.com/o/oauth2/token \
-d 'client_id=[client id]' \
-d 'client_secret=[client secret]' \
-d 'refresh_token=[refresh token]' \
-d 'redirect_uri=https://google.com' \
-d 'grant_type=refresh_token'
レスポンスにAccess Tokenが入っているので、このTokenを使って各種APIにアクセスしましょう。
expoires_in
がある通り、Access Tokenには期限が設定されているので、API呼び出しの度にRefresh Tokenを使ってAccess Tokenを取得するのが良いと思います。
{
"access_token": "ya29.**************************",
"expires_in": 3599,
"scope": "https://www.googleapis.com/auth/androidpublisher",
"token_type": "Bearer"
}
まとめ
Google Play Developer APIを使うためのAccess Token取得方法をまとめました。
クライアントシークレットの取得までは公式ドキュメント
に多少書いてあるのですが、
Refresh Tokenを使ったAccess Tokenの取得までは書いていないので役に立てば嬉しいです。