February 28, 2023

Google Play Developer APIの登録手順

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 が作成されます。

enable google play console api

OAuthクライアントの作成

上記の設定を行うと下の方にOAuthクライアントの設定が増えます。

create-oauth-client

まずはOAuth同意画面の設定を行います。
一番下に表示されているOAuth同意画面設定からでも良いですし、

GCPのGoogle Play Android Developerのプロジェクトを選択 > APIとサービス > OAuth同意画面
から設定しても大丈夫です。

oauth-consent

次に認証情報の作成をしてクライアントIDとクライアントシークレットを取得します。

GCPのGoogle Play Android Developerのプロジェクトを選択 > 認証情報 > 認証情報を作成 > OAuthクライアントID

ウェブアプリケーションで作成します。

create credential

作成が終わるとクライアントIDとクライアントシークレットが取得できますのでメモっておきましょう。
(クライアントシークレットはAccess Token取得時に必要になります。)

create credential result

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

任意のアカウントで同意をします。

required-agreement

そうすると、このような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の取得までは書いていないので役に立てば嬉しいです。

© AAkira 2023