Autenticazione a due fattori con fastlane

Aug 20 2020

Sto rilasciando la mia app per la distribuzione Firebase lancia Fastlane durante l'utilizzo della macchina CI. Sto affrontando un problema con la 2FA.

Sto usando Match per recuperare i miei certificati. Questo è quello che ho sotto "Appfile"

app_identifier "com.example.example" # the bundle 
apple_id "[email protected]" # Your Apple
team_id "abcd..."  # Developer Portal Team ID
ENV["FASTLANE_USER"] = "[email protected]"
ENV["MATCH_PASSWORD"] = ""
ENV["FASTLANE_PASSWORD"] = ""
ENV["FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"] = ""

Questo è l'errore che ricevo:

L'autenticazione a due fattori (codice a 6 cifre) è abilitata per l'account "[email protected]" Ulteriori informazioni sull'autenticazione a due fattori: https://support.apple.com/en-us/HT204915

Se lo stai eseguendo in una sessione non interattiva (ad es. Server o CI), controlla https://github.com/fastlane/fastlane/tree/master/spaceship#2-step-verification

(Immettere smsper sfuggire a questa richiesta e selezionare un numero di telefono affidabile per inviare il codice come messaggio di testo)

(Puoi anche impostare la variabile d'ambiente SPACESHIP_2FA_SMS_DEFAULT_PHONE_NUMBERper automatizzare questo) (Leggi di più su:https://github.com/fastlane/fastlane/blob/master/spaceship/docs/Authentication.md#auto-select-sms-via-spaceship_2fa_sms_default_phone_number)

Inserisci il codice a 6 cifre:

Ho letto questo "https://docs.fastlane.tools/best-practices/continuous-integration/" ma senza fortuna. qualcuno può aiutarmi a risolvere questo problema?

Risposte

7 rd3n Oct 13 2020 at 18:03

Il team Fastlane fatto un ottimo lavoro ❤ nelle versioni più recenti (da 2.157.0 a 2.163.0 finora) per sostenere l'uso di una chiave API per App Store Connect API in molte azioni ( pilot, deliver, match, ecc - lo stato di ogni strumento è disponibile qui ).

L'utilizzo di una chiave API elimina la necessità di fornire un account Apple per autenticare e autorizzare le azioni fastlane per eseguire le loro operazioni su App Store Connect, il che significa anche che non dovrai più combattere con problemi a 2 fattori sulla tua macchina CI o devi farlo manualmente rigenerare una sessione tramite fastlane spaceauthquando diventa non valida.

Dalla pagina della chiave API di App Store Connect :

La generazione di una chiave API ti consente di configurare, autenticare e utilizzare uno o più servizi Apple per quella chiave. Le chiavi non scadono, ma non possono essere modificate per accedere a più servizi una volta create. Puoi avere un massimo di 50 chiavi attive alla volta

Ci sono altri vantaggi nell'usare una chiave API ed è la soluzione consigliata come spiegato nella documentazione di Fastlane :

fastlane ha storicamente utilizzato ID Apple con nome utente e password per l'autenticazione utilizzando una sessione web basata su cookie. fastlane continuerà a utilizzare la stessa sessione web basata su cookie per autenticarsi con una versione non ufficiale dell'API App Store Connect.

Tuttavia, si consiglia di utilizzare l'autenticazione con chiave API quando è possibile. I vantaggi includono:

  • Nessun 2FA necessario
  • Migliori prestazioni
  • API documentata
  • Maggiore affidabilità

Non descriverò in dettaglio i passaggi per impostare e utilizzare una chiave API qui poiché è già ben spiegato nella documentazione, ma ecco i passaggi principali:

  1. Crea una nuova chiave API da App Store Connect (devi avere il ruolo di "Titolare dell'account" per crearne una),
  2. Memorizza la chiave e le sue informazioni sul tuo CI,
  3. Nel tuo Fastfile, chiama l' app_store_connect_api_keyazione con i valori memorizzati in 2.
  4. Passa il valore restituito da 3. come api_keyparametro quando chiami un'azione o lascia che l'azione recuperi il suo valore da sola dal contesto della corsia (se lo supporta).

Problema 2FA a causa di una sessione non valida:

Dovrebbe svanire :)

3 Ranknoodle Sep 09 2020 at 21:09

È necessario impostare una variabile di ambiente "FASTLANE_SESSION" = "--- \ n .... \ n" token.

Per ottenere questo token è necessario autenticarsi manualmente utilizzando questo comando:

fastlane spaceauth -u YOUR_APP_STORE_EMAIL

esempio fastlane spaceauth -u [email protected].

Avrai bisogno di riconvalidare ogni 2-3 settimane (alcuni dicono 30 giorni) la tua sessione. Il processo è un po 'un dolore in questo momento.