Guida

Collega i tuoi account App Store e Google Play.

TL;DR. Per far pubblicare Mokbi al posto tuo, colleghi due cose una sola volta: una chiave service account di Google Cloud (un file JSON) per Google Play, e una chiave API di App Store Connect (un file .p8 più un Key ID e un Issuer ID) per Apple. Le chiavi sono la parte facile. Il passaggio su cui inciampano quasi tutti è concedere l'accesso nel posto giusto, perché Google Cloud IAM e la Play Console sono due sistemi di permessi separati. Questa guida illustra entrambe le configurazioni dall'inizio alla fine ed elenca le soluzioni esatte per gli errori più comuni.

Cosa ti serve

Mokbi non vede mai la password del tuo store. Crei invece una chiave con permessi limitati per ogni store e la incolli una sola volta. Viene verificata con lo store, salvata cifrata, e puoi disconnetterla in qualsiasi momento.

  • Google Play: una chiave service account di Google Cloud, scaricata come file JSON, da un progetto con la Google Play Android Developer API abilitata, più quel service account invitato nella tua Play Console.
  • App Store Connect: una chiave API, scaricata come file .p8, più il suo Key ID e l'Issuer ID del tuo team.

Questa operazione va fatta una sola volta per store. Dopodiché, pubblicare e ripubblicare è un solo clic. Inizia da Google, ha più passaggi.

Google Play, parte 1: crea la chiave del service account

Questa parte si svolge nella Google Cloud Console (console.cloud.google.com).

  1. Crea o scegli un progetto, ad esempio "Mokbi Publisher".
  2. Vai su APIs & Services → Library, cerca Google Play Android Developer API e clicca su Enable.
  3. Vai su APIs & Services → Credentials → Create credentials → Service account. Assegnagli un nome come mokbi-play-publisher. Puoi lasciare vuoti i ruoli di progetto: i permessi veri arrivano dalla Play Console nella parte 2.
  4. Apri il service account, vai alla scheda Keys, poi Add key → Create new key → JSON, e scarica il file. Quel JSON è ciò che incolli in Mokbi. Il client_email al suo interno (finisce in .iam.gserviceaccount.com) è l'indirizzo che inviterai nel passaggio successivo, quindi tienilo a portata di mano.

Ti compare l'errore "Service account key creation is disabled"? È una policy a livello di organizzazione di Google chiamata iam.disableServiceAccountKeyCreation, attiva di default sotto "Secure by Default". Disattivala per questo progetto: IAM & Admin → Organization Policies, trova Disable service account key creation, scegli Manage policy, seleziona "Override parent's policy", imposta Enforcement: Off limitato a questo progetto, e salva. Aspetta un paio di minuti e riprova con la chiave. Serve il ruolo Organization Policy Administrator, che il proprietario dell'organizzazione ha o può concedere.

Google Play, parte 2: concedi l'accesso nella Play Console

Questo è il passaggio che costa ore di lavoro a molti, quindi leggilo con attenzione. L'accesso alla tua app viene concesso solo nella Google Play Console (play.google.com/console), mai in Google Cloud IAM. Ci sono due punti da controllare:

  1. Setup → API access: assicurati che il progetto Google Cloud che contiene il tuo service account sia collegato qui. Senza il collegamento, la chiave può autenticarsi ma riceve un 403 su ogni app.
  2. Users and permissions (in fondo alla colonna di sinistra, a livello account): scegli Invite new users, incolla l'email del service account (quella .iam.gserviceaccount.com), poi sotto App permissions aggiungi la tua app e concedi almeno Manage store presence. Questo unico permesso a livello app basta per pubblicare i testi della scheda e gli screenshot: non serve l'Admin a livello account.

La tua app deve già esistere nella Play Console. L'API della scheda modifica un pacchetto esistente, non crea una nuova app, e non serve ancora caricare alcun APK o AAB. Assicurati che il nome del pacchetto che inserisci in Mokbi corrisponda esattamente all'app.

L'insidia numero uno: Cloud IAM non è la Play Console

Se continui a ricevere PERMISSION_DENIED, il motivo è quasi sempre questo. Google Cloud IAM (la pagina IAM & Admin → IAM nella Cloud Console, dove assegni "ruoli" al service account) controlla l'accesso alle risorse di Google Cloud. Non fa nulla per l'accesso alla scheda store della tua app. Assegnare ruoli lì non risolverà mai un errore di permessi sullo store.

L'accesso all'app si gestisce interamente nella Play Console, nei due punti visti sopra: il collegamento API access e l'invito in Users and permissions. Sistema questi due punti, e la stessa chiave che restituiva 403 inizia a funzionare.

Apple: crea una chiave API di App Store Connect

Questa parte si svolge in App Store Connect (appstoreconnect.apple.com). Mokbi chiede tre cose: il contenuto del file .p8, il Key ID e l'Issuer ID.

  1. Vai su Users and Access → Integrations → App Store Connect API. Questa sezione è visibile solo all'Account Holder del tuo team o a un Admin. Se richiesto, consenti le chiavi del team.
  2. Clicca su Generate API Key, assegnale un nome (ad esempio "Mokbi Publisher") e dalle il ruolo App Manager.
  3. Scarica il file .p8. Puoi scaricarlo una sola volta, quindi conservalo in un posto sicuro. Annota il Key ID mostrato accanto alla chiave, e l'Issuer ID, lo UUID in cima alla pagina Keys.

Come per Google, l'app deve già esistere in App Store Connect. L'API modifica una scheda esistente e non serve caricare nessuna build. La pubblicazione con Mokbi prepara la versione per te e si ferma prima dell'invio in revisione, così sei tu a premere Submit in App Store Connect quando sei pronto.

Collegalo in Mokbi

Apri un progetto, vai al passaggio Pubblica e usa i pulsanti di collegamento:

  • Collega Google Play: incolla il JSON completo del service account, poi Verifica e collega. Inserisci il nome del pacchetto ed esegui Verifica connessione prima di pubblicare.
  • Collega App Store Connect: apri il file .p8 in un editor di testo e incollane il contenuto, aggiungi Key ID e Issuer ID, poi Verifica e collega.

Ogni chiave viene verificata con lo store prima di salvare qualsiasi cosa, conservata cifrata nella nostra cassaforte, e rimovibile in qualsiasi momento con Disconnetti.

Problemi comuni e come risolverli

"Service account key creation is disabled." Una policy dell'organizzazione blocca le chiavi JSON. Disattiva iam.disableServiceAccountKeyCreation per il progetto (vedi Google Play parte 1), aspetta due minuti e riprova.

PERMISSION_DENIED o 403 su ogni app. L'accesso non è impostato nella Play Console. Verifica che il progetto Cloud sia collegato sotto Setup → API access, e che l'email del service account sia invitata sotto Users and permissions con Manage store presence sulla tua app. I ruoli in Cloud IAM non contano.

Continua a fallire subito dopo aver concesso l'accesso. Le modifiche ai permessi impiegano qualche minuto a propagarsi. Salva di nuovo il permesso nella Play Console (aprilo e risalvalo) oppure aspetta un po', poi esegui di nuovo Testa la connessione. Come test rapido di isolamento, concedere temporaneamente al service account l'Admin a livello account dovrebbe far passare il dry run: se succede, il problema precedente era legato all'ambito app o al collegamento del progetto.

App sbagliata, o non succede nulla. Il nome del pacchetto in Mokbi deve corrispondere esattamente all'app nella Play Console, e l'app deve già esistere in entrambe le console. L'API della scheda modifica un'app esistente, non ne crea mai una nuova.

Hai perso il file .p8. Apple ti permette di scaricarlo una sola volta. Se non lo trovi più, revoca quella chiave in App Store Connect e generane una nuova, poi ricollegala in Mokbi.

Collega i tuoi store → Come funziona la pubblicazione