App Store Connect API kulcs (.p8): létrehozás és használat
Írta: Mehdi Azizi
Megjelent: , 10 p
Az App Store Connect API kulcsot (.p8) csak egyszer töltheted le. Szerepkör, Issuer ID, Key ID, visszavonás, és használat Expóval, fastlane-nel vagy szkriptből.
Egy App Store Connect API kulccsal egy eszköz, például az EAS, a fastlane, a RevenueCat vagy a saját szkripted a fiókodban dolgozhat a jelszavad és a kétlépcsős azonosítás nélkül. A kulcs nyilvános felét az Apple őrzi, a privát felét, egy .p8 fájlt, te töltöd le, de csak egyszer. Ezzel a fájllal, az Issuer ID-val és a Key ID-val olyan tokeneket írsz alá, amelyek a legtöbb kéréshez legfeljebb 20 percig érvényesek.
Az iOS-appjaimat, köztük a TradaZent és a Nolerát, Expóval adom ki. Egy App Manager szerepkörű csapatkulcsot használ a RevenueCat, az Expo buildjeim és egy parancssori eszköz, amivel az adatlapjaimat szerkesztem. Ez az útmutató az Apple, az Expo és a fastlane 2026. november 3-án átnézett oldalaira épül. Ne keverd össze azokkal a szolgáltatáskulcsokkal, amiket az app kódjába teszel: azokról itt írtam: titkos API kulcs egy Expo appban.
Mire jó egy App Store Connect API kulcs
Az Apple dokumentációja szerint az App Store Connect API minden kéréshez JWT tokent kér. Ezt te generálod, és a privát kulcsoddal írod alá. A kulcs csak erre az API-ra jó: az Apple más szolgáltatásaihoz nem használhatod.
Az előnye egy mondatban: senkinek nem kell jóváhagynia a bejelentkezést. Az Apple ID-d elakad a kétlépcsős azonosításnál, és ez minden automatizálást megakaszt. Az EAS Submit iOS útmutató megmutatja, mit változtat ez egy Expo app beküldésénél.
Mindenekelőtt: kérj hozzáférést az API-hoz
Az első kulcsot nem hozhatod létre azonnal. Az App Store Connect súgója egyértelmű: először az Account Holdernek kell hozzáférést kérnie az API-hoz. Megnyitja a Users and Access részt, rákattint az Integrations fülre, majd a Request Access gombra. Az Apple egyenként bírálja el a kérelmeket.
Az Account Holder az, aki a fiókot regisztrálta. Ha most kezded, az te vagy: az Apple fejlesztői fiók útmutató részletezi a regisztrációt.
Csapatkulcs vagy egyéni kulcs
Az Apple kétféle kulcsot kínál. Íme a különbségek a dokumentáció és az App Store Connect súgója alapján:
| Szempont | Csapatkulcs | Egyéni kulcs |
|---|---|---|
| Ki generálhatja | Account Holder vagy Admin | Szinte bármelyik felhasználó |
| Elérhető appok | Mind, kivétel nélkül | A felhasználó appjai |
| Jogosultságok | A választott szerepkör | A felhasználóéi |
| Kulcsok száma | Több is | Személyenként egy aktív |
| Tanúsítványok és profilok | Igen, szerepkörtől függően | Nem |
| Értékesítés, pénzügyek, notaryTool | Szerepkörtől függően | Nem |
| Token mezője | iss = Issuer ID | sub = user |
A „szinte bármelyik felhasználó” az Apple szerint ezt jelenti: Account Holder, Admin, App Manager, Customer Support, Developer és Marketing, kivéve, ha egy Admin vagy az Account Holder elvette tőlük az egyéni kulcs generálásának jogát.
Expóhoz vagy fastlane-hez csapatkulcsot válassz. Egy egyéni kulcs nem fér hozzá a provisioning végpontokhoz, vagyis azokhoz, amelyek tanúsítványokat és profilokat hoznak létre. A fastlane dokumentációja is megerősíti: minden provisioninghoz kötődő hozzáféréshez csapatkulcs kell.
Milyen szerepkört adj a kulcsodnak
Egy csapatkulcs a szerepkörétől függetlenül a fiók összes appjához hozzáfér. A szerepkör azt dönti el, mit tehet. Az Apple figyelmeztet, hogy egy Admin kulcs felhasználókat hozhat létre és törölhet: a legkisebb olyan szerepkört add, ami lefedi a felhasználást. Az alábbi jogosultságok az Apple szerepkör-táblázatából származnak.
| A kulcs felhasználása | Megengedő szerepkörök |
|---|---|
| Buildek feltöltése | Admin, App Manager, Developer |
| TestFlight buildek kezelése | Admin, App Manager |
| Tanúsítványok és profilok létrehozása | Admin, App Manager |
| App beküldése review-ra | Admin, App Manager |
| Termékek és árak importálása (RevenueCat) | Legalább App Manager |
| Más csapatkulcsok generálása | Admin |
A RevenueCat sor a RevenueCat dokumentációjából jön. Az Expo útmutatója viszont Admin szerepkört ad a kulcsnak. Az én appjaimnál elég az App Manager: az EAS ezzel hozza létre a terjesztési profilokat, a RevenueCat pedig importálja a termékeket.
Ha a kulcs elkészült, sem a nevét, sem a szerepkörét nem módosíthatod. Ha változtatni akarsz, vissza kell vonnod, és újat kell generálnod.
Csapatkulcs létrehozása lépésről lépésre
Admin vagy Account Holder fiók kell hozzá. Az Apple szerint:
- Nyisd meg a Users and Access részt, majd az Integrations fület.
- Válaszd az App Store Connect API-t a bal oldali oszlopban, majd a Team Keys fület.
- Kattints a Generate API Key gombra, vagy a + gombra.
- Adj nevet a kulcsnak. Csak neked szól, nem része a kulcsnak. Nevezd el arról az eszközről, ami használni fogja.
- Válaszd ki a szerepkört az Access alatt, majd kattints a Generate gombra.
- Töltsd le a privát kulcsot a Download API Key linkkel.
A letöltési link eltűnik, amint letöltötted a fájlt, és az Apple nem tart meg róla másolatot. Tedd biztonságos helyre a
.p8fájlt, mielőtt bezárod az oldalt.
Ezután jegyezd fel a két azonosítót. Az Apple tokenekről szóló oldala szerint az Issuer ID az Integrations oldal tetején jelenik meg, egy Copy gombbal. A Key ID az aktív kulcsok listájában látható: vidd fölé az egeret, és megjelenik a Copy Key ID. Az Issuer ID a fiók összes csapatkulcsánál ugyanaz. A Key ID minden kulcsnál egyedi.
Egyéni kulcsnál rövidebb a folyamat: nyisd meg a felhasználói profilodat, görgess le az Individual API Key részhez, és kattints a Generate API Key gombra. A letöltés itt is egyszeri.
A .p8 fájl tárolása
Az Apple azt kéri, hogy jelszóként kezeld a kulcsot: ne oszd meg, ne tedd kódtárba, és soha ne építsd be egy app kódjába. Az én rutinom:
- Egy mappa a projekten kívül, vagy a CI-eszközöd titokkezelője.
- A kulcsok mappája a
.gitignore-ban, ha a fájlnak egy feltöltés idejére a projektben kell lennie. - Szigorú jogosultságok. Egy App Store Connect parancssori eszköz addig elutasította a
.p8fájlomat, amíg más fiókok is olvashatták. Egychmod 600megoldotta. - Eszközönként egy kulcs. Az Apple engedi, hogy több kulcsot generálj, tetszőleges szerepkörökkel.
Ezt az utolsó pontot az elején nem tartottam be. Az App Manager kulcsomat egyszerre használja a RevenueCat, a buildjeim és az adatlap-eszközöm. Ha vissza kell vonnom, három eszköz áll le egyszerre. Ha újrakezdhetném, eszközönként külön kulcsot csinálnék, hogy egyet le tudjak kapcsolni a többi érintése nélkül.
Használat Expóval
Háromféleképpen adhatod meg a kulcsot az EAS-nek:
- Hagyd, hogy az EAS kezelje. Az
eas credentials --platform ioslétrehozhat egy kulcsot, és az Expo szerverein tárolja. Ez a legegyszerűbb út. - Add meg az
eas.json-ban. Asubmitprofil elfogadja azascApiKeyPath,ascApiKeyIssuerIdésascApiKeyIdmezőket. Az eas.json referenciája szerint ezek a mezők környezeti változókat is elfogadnak, például$ASC_API_KEY_PATH. - Add át környezeti változóként. Az EAS CLI tárolója az
EXPO_ASC_API_KEY_PATH,EXPO_ASC_KEY_IDésEXPO_ASC_ISSUER_IDváltozókat dokumentálja. Egyéni kulcsnál az Issuer ID kimarad.
Egy korlát, amiről tudnod kell a buildeknél: az Expo jelzi, hogy a hivatalos API nem tud App Groupot, Merchant ID-t vagy CloudKit konténert hozzárendelni. Ilyenkor helyben, az Apple ID-ddal kell bejelentkezned. A Nolerán megtapasztaltam a widget app groupjával: a kulcs bekapcsolta a képességet, de a csoportot nem rendelte hozzá. A hozzárendelést az Apple fejlesztői portálján csináltam meg. Ha a képességek szinkronizálása elakad, az EXPO_NO_CAPABILITY_SYNC=1 kikapcsolja, és te magad kapcsolod be a képességet az app azonosítóján. A buildek aláírását a tanúsítvány és provisioning profile iOS-en cikk részletezi.
Használat fastlane-nel
A fastlane egy JSON fájlból olvassa a kulcsot. A key_id, issuer_id és key (a .p8 tartalma) mezők kötelezők. A duration és az in_house opcionális. Kitalált értékek:
{
"key_id": "XXXXXXXXXX",
"issuer_id": "your-issuer-id",
"key": "-----BEGIN PRIVATE KEY-----\nMIGT...\n-----END PRIVATE KEY-----",
"duration": 1200,
"in_house": false
}
Ezután ezt a fájlt átadod egy actionnek, például: fastlane pilot distribute --api_key_path fastlane/cle.json. Egy Fastfile-ban az app_store_connect_api_key action a key_id, issuer_id és key_filepath paramétereket várja. A munkamenet hossza legfeljebb 1200 másodperc, azaz 20 perc. Nem minden action támogatja: a fastlane például jelzi, hogy a produce és a pem nem működik API kulccsal.
Használat saját szkriptben
Eszköz nélkül a tokent te magad készíted el. Az Apple megadja a receptet:
- Fejléc: az
algértékeES256, akida Key ID-d, atypértékeJWT. - Tartalom, csapatkulcs:
iss, az Issuer ID-d;iat, a létrehozás ideje;exp, a lejárat ideje;aud, értékeappstoreconnect-v1. - Tartalom, egyéni kulcs:
sub=userazisshelyett. - Időtartam: 20 perc felett az Apple a legtöbb kérésnél elutasítja a tokent.
Pythonban a PyJWT könyvtárral és a kriptográfiai függőségével, amit a dokumentációja szerint a pip install pyjwt[crypto] paranccsal telepítesz. A Mac termináljában tedd idézőjelbe: pip install "pyjwt[crypto]", különben a zsh nem fogadja el a szögletes zárójeleket.
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)
Ezután az Authorization fejlécben küldöd el, ahogy az Apple példájában:
curl -H "Authorization: Bearer $TOKEN" "https://api.appstoreconnect.apple.com/v1/apps"
- november 3-án lefuttattam ezt a szkriptet egy eldobható kulccsal, amit a gépemen generáltam: a token fejléce és tartalma megfelel az Apple oldalának, és az ES256 aláírás ellenőrizhető. Ezzel a tesztkulccsal nem küldtem el az Apple API-jának, mert az Apple-nél nem létezik. Használd újra ugyanazt a tokent, amíg érvényes: az Apple a jobb teljesítmény miatt ezt javasolja.
Kulcs visszavonása
Vond vissza a kulcsot, amint elveszett, kompromittálódott, vagy egy eszköz már nem használja. Az App Store Connect súgója szerint Account Holder vagy Admin fiókkal:
- Nyisd meg a Users and Access részt, majd az Integrations fület.
- Válaszd a Team Keys vagy az Individual Keys fület, majd kattints az Edit gombra.
- Jelöld be a visszavonandó kulcsokat, majd Revoke Key.
- Erősítsd meg a Revoke gombbal.
Egy visszavont kulcs soha nem aktiválható újra. Az Apple 30 napig mutatja a Revoked alatt. Minden eszköz, ami használta, ezután elbukik a hitelesítésen. Expónál az üzenet: „App Store Connect rejected the API authentication credentials”. Ezt az üzenetet és a többi feltöltési hibát az EAS-es feltöltési hibák és javításuk cikk magyarázza el. Ha a kulcs nem kompromittálódott, készítsd elő az újat, mielőtt a régit lekapcsolod. Ha igen, az Apple azonnali visszavonást kér.
A saját egyéni kulcsodnál: profilod, Individual API Key, majd Revoke.
A .p8 kulcs ellenőrzőlistám
- Az Account Holder hozzáférést kért az API-hoz.
- Csapatkulcs, ha buildekhez vagy profilokhoz kell.
- A szerepköre a legkisebb, ami lefedi a felhasználást, és a neve elárulja, melyik eszköz használja.
- A
.p8a kódtáron kívül van, szigorú jogosultságokkal és titkosított biztonsági másolattal. - Az Issuer ID és a Key ID fel van jegyezve, a fájltól külön.
- Minden eszköznek saját kulcsa van, hogy egyetlen kulcsot is vissza lehessen vonni.
Automatizáld a kiadást úgy, hogy ne add ki a kulcsodat
A kulcs csak egy darabja az útnak. Az iOS & Android Kit az appjaim kezdőkódjából indul, előfizetésekkel együtt, és négy lépésben visz el az App Store-ig, a saját tempódban. Ha ezzel a kulccsal kötöd be a RevenueCatet, a teljes beállítást a RevenueCat és iOS-es in-app előfizetés cikkben találod.
Ha az első kiadásodra készülsz, csináld meg az ingyenes diagnózist: megmondja, mi akaszt meg valójában, és elküldi az Apple-elutasítás elleni ellenőrzőlistámat. Az app kiadása az App Store-ban oldal minden lépést végigvesz, az adatlaptól a jóváhagyásig.
Gyakori kérdések
Hogyan hozhatok létre App Store Connect API kulcsot?
Először az Account Holder hozzáférést kér az API-hoz. Utána egy Admin megnyitja a Users and Access részt, az Integrations fület, az App Store Connect API-t, majd a Team Keys fület. Rákattint a Generate API Key gombra, megad egy nevet és egy szerepkört, legenerálja a kulcsot, majd letölti a .p8 fájlt.
Letölthető újra egy elveszett .p8 kulcs?
Nem. A fájl csak egyszer tölthető le, és az Apple nem tart meg róla másolatot. Vond vissza az elveszett kulcsot, generálj újat, és frissítsd minden eszközben, ami használta.
Hol találom az Issuer ID-t és a Key ID-t?
Az App Store Connectben, a Users and Access menü Integrations fülén. Az Issuer ID az oldal tetején jelenik meg. A Key ID az aktív kulcsok listájában szerepel. Egyéni kulcs nem használ Issuer ID-t.
Milyen szerepkört adjak egy Expo által használt kulcsnak?
Az Expo útmutatója Admin szerepkört ad. Az Apple szerepkör-táblázata szerint az App Manager elég buildek feltöltéséhez, valamint tanúsítványok és profilok létrehozásához. Az én kulcsomnak is ez a szerepköre, és ezt használom az Expo buildjeimhez.
Módosítható egy API kulcs szerepköre?
Nem. Az Apple a létrehozás után sem a nevet, sem a szerepkört nem engedi módosítani. Vond vissza, és generálj újat a megfelelő szerepkörrel.
Lejár egy App Store Connect API kulcs?
Az Apple oldalai nem említik, hogy a kulcs lejárna, csak a visszavonást. A vele aláírt tokenek járnak le, a legtöbb kérésnél legfeljebb 20 perc után.

