Przewodnik

Połącz swoje konta App Store i Google Play.

TL;DR. Żeby Mokbi mógł publikować za ciebie, raz połączysz dwie rzeczy: klucz service account w Google Cloud (plik JSON) dla Google Play oraz klucz API App Store Connect (plik .p8 wraz z Key ID i Issuer ID) dla Apple. Same klucze są najłatwiejszą częścią. Krok, na którym potyka się prawie każdy, to nadanie dostępu we właściwym miejscu, bo Google Cloud IAM i Play Console to dwa osobne systemy uprawnień. Ten przewodnik prowadzi przez obie konfiguracje od A do Z i podaje dokładne rozwiązania najczęstszych błędów.

Czego będziesz potrzebować

Mokbi nigdy nie widzi hasła do twojego sklepu. Zamiast tego tworzysz ograniczony klucz dla każdego sklepu i wklejasz go raz. Jest on weryfikowany ze sklepem, przechowywany w zaszyfrowanej formie, a ty możesz go odłączyć w dowolnym momencie.

  • Google Play: klucz service account w Google Cloud, pobrany jako plik JSON, z projektu z włączonym Google Play Android Developer API, oraz ten sam service account zaproszony do twojego Play Console.
  • App Store Connect: klucz API, pobrany jako plik .p8, wraz z jego Key ID i Issuer ID twojego zespołu.

Robisz to tylko raz na sklep. Później publikowanie i ponowna publikacja to jedno kliknięcie. Zacznij od Google, bo ma więcej etapów.

Google Play, część 1: utwórz klucz service account

Dzieje się to w Google Cloud Console (console.cloud.google.com).

  1. Utwórz lub wybierz projekt, na przykład „Mokbi Publisher”.
  2. Przejdź do APIs & Services → Library, wyszukaj Google Play Android Developer API i kliknij Enable.
  3. Przejdź do APIs & Services → Credentials → Create credentials → Service account. Nadaj mu nazwę, na przykład mokbi-play-publisher. Role projektu możesz zostawić puste — prawdziwe uprawnienia pochodzą z Play Console w części 2.
  4. Otwórz service account, przejdź do zakładki Keys, następnie Add key → Create new key → JSON, i pobierz plik. Ten JSON wklejasz do Mokbi. client_email w środku (kończy się na .iam.gserviceaccount.com) to adres, który zapraszasz w następnym kroku, więc miej go pod ręką.

Widzisz komunikat „Service account key creation is disabled”? To zasada organizacji Google o nazwie iam.disableServiceAccountKeyCreation, domyślnie włączona w ramach „Secure by Default”. Wyłącz ją dla tego projektu: IAM & Admin → Organization Policies, znajdź Disable service account key creation, wybierz Manage policy, zaznacz „Override parent's policy”, ustaw Enforcement: Off tylko dla tego projektu i kliknij Save. Odczekaj parę minut i spróbuj ponownie pobrać klucz. Potrzebujesz roli Organization Policy Administrator, którą ma właściciel organizacji albo może ją nadać.

Google Play, część 2: nadaj dostęp w Play Console

To krok, który kosztuje ludzi godziny, więc przeczytaj go uważnie. Dostęp do twojej aplikacji nadaje się wyłącznie w Google Play Console (play.google.com/console), nigdy w Google Cloud IAM. Są dwa miejsca do sprawdzenia:

  1. Setup → API access: upewnij się, że projekt Google Cloud, w którym znajduje się twój service account, jest tutaj połączony. Bez tego połączenia klucz może się uwierzytelnić, ale dostaje 403 na każdej aplikacji.
  2. Users and permissions (na dole lewej kolumny, na poziomie konta): wybierz Invite new users, wklej e-mail service account (ten kończący się na .iam.gserviceaccount.com), a następnie w App permissions dodaj swoją aplikację i nadaj co najmniej Manage store presence. To jedno uprawnienie na poziomie aplikacji wystarczy, by publikować tekst wpisu i zrzuty ekranu — nie potrzebujesz uprawnień Admina na poziomie konta.

Twoja aplikacja musi już istnieć w Play Console. API wpisu edytuje istniejący pakiet, nie tworzy nowej aplikacji, i nie trzeba jeszcze wgrywać żadnego APK ani AAB. Upewnij się, że nazwa pakietu wpisana w Mokbi dokładnie zgadza się z aplikacją.

Pułapka numer jeden: Cloud IAM to nie to samo co Play Console

Jeśli wciąż dostajesz PERMISSION_DENIED, to prawie zawsze dlatego. Google Cloud IAM (strona IAM & Admin → IAM w Cloud Console, gdzie przypisujesz „role” dla service account) kontroluje dostęp do zasobów Google Cloud. Nie ma to żadnego znaczenia dla dostępu do wpisu twojej aplikacji w sklepie. Przypisywanie ról tam nigdy nie naprawi błędu uprawnień sklepu.

Dostęp do aplikacji znajduje się wyłącznie w Play Console, w dwóch miejscach wymienionych wyżej: link API access oraz zaproszenie w Users and permissions. Ustaw je, a ten sam klucz, który zwracał 403, zacznie działać.

Apple: utwórz klucz API App Store Connect

Dzieje się to w App Store Connect (appstoreconnect.apple.com). Mokbi prosi o trzy rzeczy: zawartość pliku .p8, Key ID i Issuer ID.

  1. Przejdź do Users and Access → Integrations → App Store Connect API. Ta sekcja jest widoczna tylko dla Account Holder twojego zespołu albo dla Admina. Jeśli pojawi się taka prośba, zezwól na klucze zespołu.
  2. Kliknij Generate API Key, nadaj mu nazwę (na przykład „Mokbi Publisher”) i przypisz mu rolę App Manager.
  3. Pobierz plik .p8. Możesz go pobrać tylko raz, więc przechowuj go w bezpiecznym miejscu. Zanotuj Key ID pokazany obok klucza oraz Issuer ID, czyli UUID na górze strony Keys.

Podobnie jak w przypadku Google, aplikacja musi już istnieć w App Store Connect. API edytuje istniejący wpis i nie trzeba wgrywać żadnego builda. Publikacja przez Mokbi przygotowuje wersję za ciebie i zatrzymuje się przed wysłaniem do weryfikacji — Submit w App Store Connect naciskasz dopiero wtedy, kiedy uznasz wersję za gotową.

Połącz to w Mokbi

Otwórz projekt, przejdź do kroku Publikacja i skorzystaj z przycisków połączenia:

  • Połącz Google Play: wklej pełny JSON service account, a potem kliknij Zweryfikuj i połącz. Wpisz nazwę pakietu i uruchom Testuj połączenie przed publikacją.
  • Połącz App Store Connect: otwórz plik .p8 w edytorze tekstu i wklej jego zawartość, dodaj Key ID i Issuer ID, a potem kliknij Zweryfikuj i połącz.

Każdy klucz jest weryfikowany ze sklepem, zanim cokolwiek zostanie zapisane, przechowywany w zaszyfrowanej formie w naszym sejfie, i możliwy do odłączenia w dowolnym momencie za pomocą Rozłącz.

Częste problemy i jak je naprawić

„Service account key creation is disabled.” Zasada organizacji blokuje klucze JSON. Wyłącz iam.disableServiceAccountKeyCreation dla projektu (zobacz Google Play, część 1), odczekaj dwie minuty i spróbuj ponownie.

PERMISSION_DENIED albo 403 na każdej aplikacji. Dostęp nie jest ustawiony w Play Console. Sprawdź, czy projekt Cloud jest połączony w Setup → API access i czy e-mail service account jest zaproszony w Users and permissions z uprawnieniem Manage store presence na twojej aplikacji. Role w Cloud IAM się nie liczą.

Wciąż nie działa zaraz po nadaniu dostępu. Zmiany uprawnień potrzebują kilku minut, żeby się rozpropagować. Zapisz uprawnienie w Play Console jeszcze raz (otwórz je i zapisz ponownie) albo poczekaj chwilę, a potem uruchom Testuj połączenie jeszcze raz. Jako szybki test izolujący: tymczasowe nadanie uprawnienia Admina na poziomie konta dla service account powinno sprawić, że dry run przejdzie — jeśli tak się stanie, wcześniejszy błąd dotyczył zakresu aplikacji albo połączenia projektu.

Zła aplikacja albo nic się nie dzieje. Nazwa pakietu w Mokbi musi dokładnie zgadzać się z aplikacją w Play Console, a aplikacja musi już istnieć w obu konsolach. API wpisu edytuje istniejącą aplikację, nigdy nie tworzy nowej.

Zgubiony plik .p8. Apple pozwala pobrać go tylko raz. Jeśli zniknął, unieważnij ten klucz w App Store Connect i wygeneruj nowy, a potem połącz się ponownie w Mokbi.

Połącz swoje sklepy → Zobacz, jak działa publikacja