Firebase で Android の定期購入 (Google Billing Library) その1
久しぶりに定期購入を実装したら色々ハマったので同じように困っちゃっている方の参考になれば幸いです。
まずは、ドキュメントを読んでいても分からなくて調べまくった and/or 試行錯誤したポイントから説明します。
他の記事もあわせてどうぞ。
- Firebase で Android の定期購入 (Google Billing Library) その2 ・・・概念図
- Firebase で Android の定期購入 (Google Billing Library) その3 ・・・サンプルコード
主に参考にさせていただいたサイト
- 【公式】Google Play の課金システム … 一通り読む必要があると思います。最初はよくわからない部分もあると思うので、実装進めていく中で読み返して理解を深めれば良いかと。
- 【Flutter + Firebase】アプリ内課金(IAP)のステップバイステップ実装ガイド【レシート検証】 … サーバサイドの実装を流用させていただきました。
- Setting up Google Billing using Flutter and Firebase … サーバサイドの PubSub の実装を流用させていただきました。
- [DroidKaigi 2020] Re:ゼロから始める Play Billing Lib … クライアントサイドの実装を流用させていただきました。
Google Play Developer API にアクセスするサービスアカウントの作成
「準備する」の「Google Play Developer API を構成する」で、定期購入の情報などをサーバサイドで参照するための API にアクセスするためのサービスアカウントを作成しますが、今ひとつ欲しい情報が書かれていないように思います。 今のところ次の手順で作成したアカウントでうまくいっています。- 「Google Play Developer API のスタートガイド」の「新しい API プロジェクトを作成する」で進める。Google Cloud Platform に「Google Play Console Developer」という名前のプロジェクトが作られます。
- 作成したプロジェクトにサービスアカウントを追加しますが、ロールは「閲覧者」でOK。全部試したわけではありませんが、オーナーロールは不要でした。ただし、全くロールを付与しないと、APIを呼び出せなかったので、何らかのロールの付与は必須のようです。
- 追加したサービスアカウントが有効になるまで、なんなら丸一日以上かかる。その間に別の作業を進めておきましょう。ちなみに反映されるまでAPIを呼び出すと「The current user has insufficient permissions to perform the requested operation.」なエラーが発生します。ひたすら待つしかありません。
サービスアカウントへの付与権限
Google Cloud Platform でサービスアカウントが作成できたら、Google Play Console の「設定」-「API アクセス」で、そのアカウントに権限を付与します。 定期購入に限ってかもしれませんが、とりあえず「アカウントの権限」で以下の権限を付与するだけでうまくいっています。- 「アプリ情報の閲覧、一括レポートのダウンロード(読み取り専用)」
- 「売上データ、注文、解約アンケートの回答の閲覧」
“Firebase で Android の定期購入 (Google Billing Library) その1” に対して3件のコメントがあります。