Otentikasi Dua Faktor Dengan fastlane
Saya merilis aplikasi saya ke firebase distribution, melempar Fastlane saat menggunakan mesin CI. Saya menghadapi masalah dengan 2FA.
Saya menggunakan Pertandingan untuk mengambil sertifikat saya. Ini yang saya miliki di "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"] = ""
Ini adalah kesalahan yang saya terima:
Otentikasi Dua Faktor (kode 6 digit) diaktifkan untuk akun '[email protected]' Informasi lebih lanjut tentang Otentikasi Dua Faktor: https://support.apple.com/en-us/HT204915
Jika Anda menjalankan ini dalam sesi non-interaktif (mis. Server atau CI), periksa https://github.com/fastlane/fastlane/tree/master/spaceship#2-step-verification
(Masukkan
sms
untuk keluar dari prompt ini dan pilih nomor telepon tepercaya untuk mengirim kode sebagai pesan teks)(Anda juga dapat mengatur variabel lingkungan
SPACESHIP_2FA_SMS_DEFAULT_PHONE_NUMBER
untuk mengotomatiskan ini) (Baca lebih lanjut di:https://github.com/fastlane/fastlane/blob/master/spaceship/docs/Authentication.md#auto-select-sms-via-spaceship_2fa_sms_default_phone_number)Silakan masukkan kode 6 digit:
Saya telah membaca "https://docs.fastlane.tools/best-practices/continuous-integration/" ini tetapi tidak berhasil. Adakah yang bisa membantu saya mengatasi masalah ini?
Jawaban
Tim Fastlane melakukan pekerjaan besar ❤ di rilis terbaru (dari 2.157.0 ke 2.163.0 sejauh ini) untuk mendukung penggunaan sebuah kunci API API App Store Connect di banyak tindakan ( pilot
, deliver
, match
, dll - status untuk setiap alat tersedia di sini ).
Menggunakan kunci API menghilangkan kebutuhan untuk menyediakan akun Apple untuk mengautentikasi dan mengotorisasi tindakan fastlane untuk melakukan operasinya di App Store Connect, yang juga berarti bahwa Anda tidak lagi berkelahi dengan 2 masalah faktor pada mesin CI Anda atau harus secara manual membuat kembali sesi fastlane spaceauth
saat menjadi tidak valid.
Dari halaman Kunci API App Store Connect :
Membuat kunci API memungkinkan Anda mengonfigurasi, mengautentikasi, dan menggunakan satu atau beberapa layanan Apple untuk kunci tersebut. Kunci tidak kedaluwarsa, tetapi tidak dapat diubah untuk mengakses lebih banyak layanan setelah dibuat. Anda dapat memiliki maksimal 50 kunci aktif sekaligus
Ada manfaat lain menggunakan kunci API dan ini adalah solusi yang direkomendasikan seperti yang dijelaskan dalam dokumentasi fastlane :
fastlane secara historis menggunakan ID Apple dengan nama pengguna dan kata sandi untuk mengautentikasi menggunakan sesi web berbasis cookie. fastlane akan terus menggunakan sesi web berbasis cookie yang sama untuk mengautentikasi dengan versi tidak resmi dari App Store Connect API.
Namun, disarankan untuk menggunakan otentikasi Kunci API bila Anda bisa. Manfaatnya antara lain:
- Tidak perlu 2FA
- Performa lebih baik
- API Terdokumentasi
- Keandalan yang ditingkatkan
Saya tidak akan merinci langkah-langkah untuk menyiapkan dan menggunakan kunci API di sini karena sudah dijelaskan dengan baik dalam dokumentasi tetapi berikut adalah langkah-langkah utamanya:
- Buat kunci API baru dari App Store Connect (Anda harus memiliki peran "Pemegang Akun" untuk membuatnya),
- Simpan kunci dan infonya di CI Anda,
- Di Anda
Fastfile
, panggil app_store_connect_api_keytindakan dengan nilai-nilai yang disimpan di 2. - Teruskan nilai yang dikembalikan oleh 3. sebagai
api_key
parameter saat Anda memanggil tindakan, atau biarkan tindakan mengambil nilainya sendiri dari konteks jalur (jika mendukungnya).
Masalah 2FA karena sesi tidak valid:

Harus lenyap :)

Anda perlu menyiapkan token variabel lingkungan 'FASTLANE_SESSION' = '--- \ n .... \ n'.
Untuk mendapatkan token ini, Anda perlu mengautentikasi secara manual menggunakan perintah ini:
fastlane spaceauth -u YOUR_APP_STORE_EMAIL
contoh fastlane spaceauth -u [email protected].
Anda perlu memvalidasi ulang setiap 2-3 minggu (ada yang mengatakan 30 hari) sesi Anda. Prosesnya agak menyebalkan sekarang.