App Store と Google Play のアカウントを連携する方法。
必要なもの
Mokbi がストアのパスワードを見ることは一切ありません。代わりに、ストアごとに権限を絞ったキーを作成し、一度だけ貼り付けます。キーはストア側で検証されたうえで暗号化して保存され、いつでも連携解除できます。
- Google Play:Google Play Android Developer API を有効にしたプロジェクトの Google Cloud service account キー(JSON ファイルとしてダウンロード)と、その service account を招待した Play Console。
- App Store Connect:
.p8ファイルとしてダウンロードする API キー、その Key ID、そしてチームの Issuer ID。
この作業はストアごとに一度だけで済みます。それ以降は、公開も再公開もワンクリックです。手順が多い Google Play から先に片づけましょう。
Google Play パート1:service account キーを作成する
この作業は Google Cloud Console(console.cloud.google.com)で行います。
- プロジェクトを新規作成するか選択します。例:「Mokbi Publisher」。
- APIs & Services → Library を開き、Google Play Android Developer API を検索して Enable をクリックします。
- APIs & Services → Credentials → Create credentials → Service account を開きます。
mokbi-play-publisherのような名前を付けます。プロジェクトのロールは空のままで構いません。実際の権限はパート2で Play Console 側から付与します。 - 作成した service account を開き、Keys タブから Add key → Create new key → JSON を選んでファイルをダウンロードします。この JSON ファイルを Mokbi に貼り付けます。中に含まれる
client_email(末尾が.iam.gserviceaccount.com)は次の手順で招待するアドレスなので、控えておいてください。
「Service account key creation is disabled」と表示された場合。これは iam.disableServiceAccountKeyCreation という Google の組織ポリシーによるもので、「Secure by Default」のもとで既定でオンになっています。このプロジェクトではオフにしましょう。IAM & Admin → Organization Policies を開き、Disable service account key creation を見つけて Manage policy を選び、「Override parent's policy」を選択して Enforcement: Off をこのプロジェクトに適用し、保存します。数分待ってから再度キーを試してください。この操作には Organization Policy Administrator ロールが必要です。組織のオーナーであればこのロールを持っているか、他のユーザーに付与できます。
Google Play パート2:Play Console でアクセス権を付与する
ここが一番時間を取られるステップなので、じっくり読んでください。アプリへのアクセス権は Google Play Console(play.google.com/console)だけで付与されるものであり、Google Cloud IAM では絶対に付与されません。確認すべき場所は2つあります。
- Setup → API access:service account を保持している Google Cloud プロジェクトがここでリンクされているか確認します。リンクされていないと、キーは認証はできてもすべてのアプリで403になります。
- Users and permissions(左側の列の一番下、アカウントレベル):Invite new users を選び、service account のメールアドレス(
.iam.gserviceaccount.comのもの)を貼り付けます。次に App permissions で自分のアプリを追加し、少なくとも Manage store presence を付与します。このアプリ単位の権限だけで掲載情報とスクリーンショットの公開には十分で、アカウントレベルの Admin は不要です。
アプリはすでに Play Console 上に存在している必要があります。掲載情報の API は既存のパッケージを編集するものであり、新しいアプリを作成するものではありません。APK や AAB もまだアップロードする必要はありません。Mokbi に入力するパッケージ名がアプリと完全に一致していることを確認してください。
最大の落とし穴:Cloud IAM は Play Console ではない
PERMISSION_DENIED が出続ける場合、原因はほぼ必ずこれです。Google Cloud IAM(Cloud Console 内の IAM & Admin → IAM ページで、service account に「roles」を割り当てる場所)は、Google Cloud のリソースへのアクセスを制御するものです。アプリのストア掲載情報へのアクセスには何の効果もありません。ここでロールを割り当てても、ストアの権限エラーが直ることは絶対にありません。
アプリへのアクセス権はすべて Play Console 側、つまり上記の2か所(API access のリンクと Users and permissions の招待)にあります。この2つを設定すれば、403 を返していた同じキーが動き始めます。
Apple:App Store Connect API キーを作成する
この作業は App Store Connect(appstoreconnect.apple.com)で行います。Mokbi が必要とするのは3つ、.p8 の中身、Key ID、そして Issuer ID です。
- Users and Access → Integrations → App Store Connect API を開きます。このセクションはチームの Account Holder または Admin にのみ表示されます。確認を求められたら、team keys の使用を許可してください。
- Generate API Key をクリックし、名前を付けて(例:「Mokbi Publisher」)、App Manager ロールを付与します。
- .p8 ファイルをダウンロードします。ダウンロードできるのは一度だけなので、安全な場所に保管してください。キーの横に表示される Key ID と、Keys ページ上部にある UUID である Issuer ID も控えておきます。
Google の場合と同様、アプリはすでに App Store Connect 上に存在している必要があります。この API は既存の掲載情報を編集するものであり、ビルドのアップロードは不要です。Mokbi での公開はバージョンを準備するところまでを行い、審査提出の手前で止まるので、準備ができたら App Store Connect で自分自身が Submit を押してください。
Mokbi で連携する
プロジェクトを開き、公開 ステップに進んで、connect ボタンを使います。
- Google Play に接続:service account の JSON 全文を貼り付け、検証して接続 をクリックします。パッケージ名を入力し、公開前に 接続テスト を実行してください。
- App Store Connect に接続:
.p8ファイルをテキストエディタで開いて中身を貼り付け、Key ID と Issuer ID を追加してから 検証して接続 をクリックします。
各キーは保存される前にストア側で検証され、暗号化して保管されたうえで、接続を解除 でいつでも連携解除できます。
よくある問題と直し方
「Service account key creation is disabled」と表示される。組織ポリシーが JSON キーをブロックしています。そのプロジェクトの iam.disableServiceAccountKeyCreation をオフにし(Google Play パート1を参照)、2分待ってから再試行してください。
すべてのアプリで PERMISSION_DENIED または 403 になる。Play Console 側でアクセス権が設定されていません。Setup → API access で Cloud プロジェクトがリンクされていること、そして Users and permissions で service account のメールアドレスが招待され、対象アプリに Manage store presence が付与されていることを確認してください。Cloud IAM のロールは関係ありません。
アクセス権を付与した直後もまだ失敗する。権限の変更が反映されるまで数分かかることがあります。Play Console で権限を開いて保存し直すか、少し待ってから、もう一度 接続テスト を実行してください。切り分けの簡易テストとして、一時的に service account にアカウントレベルの Admin を付与するとドライランが通ることがあります。通れば、直前までの失敗はアプリ単位の権限またはプロジェクトのリンクの問題だったということです。
アプリを間違えている、または何も起こらない。Mokbi 内のパッケージ名は Play Console のアプリと完全に一致している必要があり、アプリは両方のコンソールにすでに存在している必要があります。掲載情報の API は既存のアプリを編集するものであり、新規作成することは決してありません。
.p8 ファイルを紛失した。Apple はダウンロードを一度しか許可していません。紛失した場合は、App Store Connect でそのキーを失効させて新しいキーを生成し、Mokbi で再接続してください。