Kunci API App Store Connect (.p8): cara cipta dan guna
Oleh Mehdi Azizi
Diterbitkan pada , 10 min
Kunci API App Store Connect (.p8) hanya boleh dimuat turun sekali. Peranan, Issuer ID, Key ID, pembatalan, dan penggunaannya dengan Expo, fastlane atau skrip.
Kunci API App Store Connect membolehkan sesuatu alat, seperti EAS, fastlane, RevenueCat atau skrip anda sendiri, bertindak pada akaun anda tanpa kata laluan dan tanpa pengesahan dua faktor. Apple menyimpan separuh awam kunci itu, dan anda memuat turun separuh peribadinya, iaitu fail .p8, sekali sahaja. Dengan fail ini, Issuer ID dan Key ID, anda menandatangani token yang sah paling lama 20 minit untuk kebanyakan permintaan.
Saya menerbitkan app iOS saya, termasuk TradaZen dan Nolera, dengan Expo. Satu kunci pasukan berperanan App Manager digunakan untuk RevenueCat, build Expo saya dan satu alat baris perintah yang menyunting halaman app saya. Panduan ini berdasarkan halaman Apple, Expo dan fastlane yang saya semak pada 3 November 2026. Jangan keliru dengan kunci perkhidmatan yang diselitkan dalam kod app: itu dibincangkan dalam kunci API rahsia dalam app Expo.
Apa yang dilakukan oleh kunci API App Store Connect
Menurut dokumentasi Apple, API App Store Connect memerlukan token JWT untuk setiap permintaan. Anda menjananya dan menandatanganinya dengan kunci peribadi anda. Kunci ini hanya untuk API ini: anda tidak boleh menggunakannya untuk perkhidmatan Apple yang lain.
Kelebihannya boleh diringkaskan dalam satu ayat: tiada sesiapa perlu mengesahkan log masuk. Apple ID anda tersekat pada pengesahan dua faktor, dan itu menghalang sebarang automasi. Panduan EAS Submit iOS menunjukkan perbezaannya untuk menghantar app Expo.
Sebelum apa-apa: mohon akses ke API
Kunci pertama tidak boleh terus dicipta. Bantuan App Store Connect jelas: Account Holder mesti memohon akses ke API terlebih dahulu. Dia membuka Users and Access, klik Integrations, kemudian Request Access. Apple menilai permohonan satu per satu.
Account Holder ialah orang yang mendaftarkan akaun. Kalau anda baru bermula, itu anda: panduan akaun pembangun Apple menerangkan pendaftarannya.
Kunci pasukan atau kunci individu
Apple menawarkan dua jenis kunci. Ini perbezaannya, diambil daripada dokumentasi dan bantuan App Store Connect:
| Kriteria | Kunci pasukan | Kunci individu |
|---|---|---|
| Siapa boleh menjananya | Account Holder atau Admin | Hampir semua pengguna |
| App yang boleh diakses | Semua, tanpa kecuali | App milik pengguna itu |
| Hak | Peranan yang dipilih | Hak pengguna itu |
| Bilangan kunci | Beberapa | Satu aktif bagi setiap orang |
| Sijil dan profil | Ya, bergantung pada peranan | Tidak |
| Jualan, kewangan, notaryTool | Bergantung pada peranan | Tidak |
| Medan token | iss = Issuer ID | sub = user |
"Hampir semua pengguna" bermaksud, menurut Apple: Account Holder, Admin, App Manager, Customer Support, Developer dan Marketing, kecuali jika Admin atau Account Holder telah menarik balik hak mereka untuk menjana kunci individu.
Untuk Expo atau fastlane, pilih kunci pasukan. Kunci individu tidak boleh mengakses titik akhir provisioning, iaitu yang mencipta sijil dan profil. Dokumentasi fastlane mengesahkannya: kunci pasukan diperlukan untuk sebarang akses berkaitan provisioning.
Peranan apa untuk kunci anda
Kunci pasukan boleh mengakses semua app dalam akaun, apa pun peranannya. Peranan menentukan apa yang boleh dilakukannya. Apple memberi amaran bahawa kunci Admin boleh mencipta dan memadam pengguna: beri peranan paling kecil yang meliputi keperluan anda. Hak di bawah diambil daripada jadual peranan Apple.
| Kegunaan kunci | Peranan yang membenarkannya |
|---|---|
| Menghantar build | Admin, App Manager, Developer |
| Mengurus build TestFlight | Admin, App Manager |
| Mencipta sijil dan profil | Admin, App Manager |
| Menghantar app untuk semakan | Admin, App Manager |
| Mengimport produk dan harga (RevenueCat) | Sekurang-kurangnya App Manager |
| Menjana kunci pasukan lain | Admin |
Baris RevenueCat datang daripada dokumentasinya. Panduan Expo pula memberi peranan Admin kepada kunci. Untuk app saya, peranan App Manager sudah cukup: EAS mencipta profil pengedaran dengannya, dan RevenueCat mengimport produk.
Selepas kunci dijana, anda tidak boleh lagi mengubah nama atau peranannya. Untuk menukarnya, anda perlu membatalkannya dan menjana kunci lain.
Cipta kunci pasukan, langkah demi langkah
Anda perlukan akaun Admin atau Account Holder. Menurut Apple:
- Buka Users and Access, kemudian tab Integrations.
- Pilih App Store Connect API di lajur kiri, kemudian tab Team Keys.
- Klik Generate API Key, atau butang +.
- Beri nama kepada kunci. Nama itu hanya untuk anda, ia bukan sebahagian daripada kunci. Namakan mengikut alat yang akan menggunakannya.
- Pilih peranan di bawah Access, kemudian klik Generate.
- Muat turun kunci peribadi melalui pautan Download API Key.
Pautan muat turun hilang sebaik sahaja anda memuat turun fail, dan Apple tidak menyimpan sebarang salinan. Simpan
.p8sebelum menutup halaman.
Kemudian catat dua pengecam itu. Menurut halaman Apple tentang token, Issuer ID dipaparkan di bahagian atas halaman Integrations, dengan butang Copy. Key ID muncul dalam senarai kunci aktif: halakan tetikus padanya untuk memaparkan Copy Key ID. Issuer ID sama untuk semua kunci pasukan dalam akaun. Key ID unik bagi setiap kunci.
Untuk kunci individu, lebih ringkas: buka profil pengguna anda, tatal ke Individual API Key dan klik Generate API Key. Muat turunnya juga sekali sahaja.
Simpan fail .p8
Apple meminta anda melayan kunci ini seperti kata laluan: jangan kongsikannya, jangan simpan dalam repositori kod, jangan sekali-kali masukkan ke dalam kod app. Rutin saya:
- Folder di luar projek, atau pengurus rahsia alat integrasi berterusan anda.
- Folder kunci dalam
.gitignoreanda, jika fail itu perlu berada dalam projek semasa penghantaran. - Kebenaran yang ketat. Satu alat baris perintah untuk App Store Connect menolak
.p8saya selagi fail itu boleh dibaca oleh akaun lain.chmod 600menyelesaikan masalah itu. - Satu kunci bagi setiap alat. Apple membenarkan anda menjana beberapa kunci, dengan peranan pilihan anda.
Perkara terakhir ini saya tidak buat pada mulanya. Kunci App Manager saya digunakan serentak oleh RevenueCat, build saya dan alat halaman app saya. Kalau saya perlu membatalkannya, tiga alat rosak sekali gus. Kalau saya boleh ulang, saya akan cipta satu kunci bagi setiap alat, supaya boleh memutuskan satu tanpa menjejaskan yang lain.
Gunakan dengan Expo
Tiga cara memberikan kunci kepada EAS:
- Biar EAS menguruskannya.
eas credentials --platform iosboleh mencipta kunci dan menyimpannya di pelayan Expo. Ini cara paling mudah. - Isytiharkan dalam
eas.json. ProfilsubmitmenerimaascApiKeyPath,ascApiKeyIssuerIddanascApiKeyId. Menurut rujukan eas.json, medan ini menerima pemboleh ubah persekitaran, seperti$ASC_API_KEY_PATH. - Hantar melalui persekitaran. Repositori EAS CLI mendokumenkan
EXPO_ASC_API_KEY_PATH,EXPO_ASC_KEY_IDdanEXPO_ASC_ISSUER_ID. Untuk kunci individu, Issuer ID ditinggalkan.
Satu had yang perlu diketahui untuk build: Expo menyatakan bahawa API rasmi tidak boleh mengaitkan App Group, Merchant ID atau bekas CloudKit. Anda perlu log masuk dengan Apple ID anda, secara tempatan. Saya mengalaminya pada Nolera dengan kumpulan app untuk widgetnya: kunci itu mengaktifkan keupayaan, tetapi tidak mengaitkan kumpulan. Saya membuat kaitan itu dalam portal pembangun Apple. Jika penyegerakan keupayaan tersekat, EXPO_NO_CAPABILITY_SYNC=1 mematikannya, dan anda aktifkan keupayaan itu sendiri pada pengecam app. Penandatanganan build diterangkan dalam sijil dan provisioning profile iOS.
Gunakan dengan fastlane
fastlane membaca kunci daripada fail JSON. Medan key_id, issuer_id dan key, iaitu kandungan .p8, adalah wajib. duration dan in_house adalah pilihan. Nilai contoh:
{
"key_id": "XXXXXXXXXX",
"issuer_id": "your-issuer-id",
"key": "-----BEGIN PRIVATE KEY-----\nMIGT...\n-----END PRIVATE KEY-----",
"duration": 1200,
"in_house": false
}
Kemudian anda hantar fail ini kepada satu tindakan, contohnya fastlane pilot distribute --api_key_path fastlane/cle.json. Dalam Fastfile, tindakan app_store_connect_api_key menerima key_id, issuer_id dan key_filepath. Tempoh sesi tidak melebihi 1,200 saat, iaitu 20 minit. Bukan semua tindakan menyokongnya: contohnya, fastlane menyatakan bahawa produce dan pem tidak berfungsi dengan kunci API.
Gunakan dalam skrip anda sendiri
Tanpa alat, anda bina token sendiri. Apple menetapkan resipinya:
- Pengepala:
algbernilaiES256,kidbernilai Key ID anda,typbernilaiJWT. - Kandungan, kunci pasukan:
iss, Issuer ID anda;iat, masa dicipta;exp, masa tamat;aud, bernilaiappstoreconnect-v1. - Kandungan, kunci individu:
subbernilaiusersebagai gantiiss. - Tempoh: melebihi 20 minit, Apple menolak token untuk kebanyakan permintaan.
Dalam Python, dengan pustaka PyJWT dan kebergantungan kriptografinya, dipasang dengan pip install pyjwt[crypto] menurut dokumentasinya. Dalam terminal Mac, gunakan tanda petik: pip install "pyjwt[crypto]", jika tidak zsh menolak tanda kurung siku.
import time
import jwt
KEY_ID = "XXXXXXXXXX"
ISSUER_ID = "your-issuer-id"
with open("AuthKey_XXXXXXXXXX.p8") as f:
private_key = f.read()
now = int(time.time())
token = jwt.encode(
{"iss": ISSUER_ID, "iat": now, "exp": now + 20 * 60, "aud": "appstoreconnect-v1"},
private_key,
algorithm="ES256",
headers={"kid": KEY_ID, "typ": "JWT"},
)
print(token)
Kemudian anda hantarnya dalam pengepala Authorization, seperti dalam contoh Apple:
curl -H "Authorization: Bearer $TOKEN" "https://api.appstoreconnect.apple.com/v1/apps"
Saya menjalankan skrip ini pada 3 November 2026 dengan kunci pakai buang yang dijana pada mesin saya: pengepala dan kandungan token sepadan dengan halaman Apple, dan tandatangan ES256 berjaya disahkan. Saya tidak menghantarnya ke API Apple dengan kunci ujian ini, kerana kunci itu tidak wujud di Apple. Gunakan semula token yang sama selagi ia masih sah: Apple mengesyorkannya untuk prestasi yang lebih baik.
Batalkan kunci
Batalkan kunci sebaik sahaja ia hilang, terdedah, atau tidak lagi digunakan oleh mana-mana alat. Menurut bantuan App Store Connect, dengan akaun Account Holder atau Admin:
- Buka Users and Access, kemudian Integrations.
- Pilih Team Keys, atau Individual Keys, kemudian klik Edit.
- Tandakan kunci yang hendak dibatalkan, kemudian Revoke Key.
- Sahkan dengan Revoke.
Kunci yang dibatalkan tidak boleh diaktifkan semula. Apple memaparkannya selama 30 hari di bawah Revoked. Setiap alat yang menggunakannya akan gagal disahkan. Dengan Expo, mesejnya ialah "App Store Connect rejected the API authentication credentials". Mesej ini dan kegagalan penghantaran lain diterangkan dalam ralat penghantaran dengan EAS dan cara membetulkannya. Jika kunci tidak terdedah, sediakan kunci baharu sebelum memutuskan yang lama. Jika terdedah, Apple meminta anda membatalkannya serta-merta.
Untuk kunci individu anda sendiri: profil anda, Individual API Key, kemudian Revoke.
Senarai semak kunci .p8 saya
- Account Holder telah memohon akses ke API.
- Kunci itu kunci pasukan jika digunakan untuk build atau profil.
- Peranannya yang paling kecil meliputi kegunaannya, dan namanya menunjukkan alat mana yang menggunakannya.
.p8disimpan di luar repositori, dengan kebenaran ketat dan salinan sandaran yang disulitkan.- Issuer ID dan Key ID dicatat berasingan, tanpa fail itu.
- Setiap alat ada kuncinya sendiri, supaya boleh membatalkan satu sahaja.
Automasikan penerbitan anda tanpa mendedahkan kunci
Kunci ini hanya satu bahagian daripada perjalanan. iOS & Android Kit bermula daripada kod permulaan app saya, termasuk langganan, dan mengikuti empat langkah hingga ke App Store, mengikut rentak anda. Jika anda menyambungkan RevenueCat dengan kunci ini, persediaan lengkapnya ada dalam RevenueCat dan langganan dalam app iOS.
Jika anda sedang menyediakan pelancaran pertama, buat diagnostik percuma anda: ia memberitahu apa yang benar-benar menghalang anda dan menghantar senarai semak anti-penolakan Apple saya. Halaman terbitkan aplikasi di App Store merangkumi setiap langkah, dari halaman app hingga kelulusan.
Soalan lazim
Bagaimana mencipta kunci API App Store Connect?
Account Holder memohon akses ke API terlebih dahulu. Kemudian, Admin membuka Users and Access, tab Integrations, App Store Connect API, Team Keys. Dia klik Generate API Key, memilih nama dan peranan, menjana kunci, kemudian memuat turun fail .p8.
Bolehkah kunci .p8 yang hilang dimuat turun semula?
Tidak. Fail itu dimuat turun sekali sahaja, dan Apple tidak menyimpan sebarang salinan. Batalkan kunci yang hilang, kemudian jana kunci baharu dan kemas kini setiap alat yang menggunakannya.
Di mana mencari Issuer ID dan Key ID?
Dalam App Store Connect, menu Users and Access, tab Integrations. Issuer ID dipaparkan di bahagian atas halaman. Key ID ada dalam senarai kunci aktif. Kunci individu tidak menggunakan Issuer ID.
Peranan apa untuk kunci yang digunakan oleh Expo?
Panduan Expo memberi peranan Admin. Menurut jadual peranan Apple, App Manager sudah cukup untuk menghantar build dan mencipta sijil serta profil. Itulah peranan kunci saya, yang digunakan untuk build Expo saya.
Bolehkah peranan kunci API diubah?
Tidak. Apple tidak membenarkan nama atau peranan kunci diubah selepas ia dicipta. Batalkannya, kemudian jana kunci baharu dengan peranan yang betul.
Adakah kunci API App Store Connect tamat tempoh?
Halaman Apple tidak menyebut sebarang tarikh tamat untuk kunci, hanya pembatalannya. Yang tamat tempoh ialah token yang ditandatangani dengannya, selepas paling lama 20 minit untuk kebanyakan permintaan.

