# App Store Connect API kulcs (.p8): létrehozás és használat

> 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.

Eredeti oldal: [App Store Connect API kulcs (.p8): létrehozás és használat](https://devoria.fr/hu/blog/app-store-connect-api-kulcs-p8-letrehozas-hasznalat)
Szerző: [Mehdi Azizi](https://devoria.fr/hu/mehdi-azizi)
Megjelenés: 2026-11-04
A tartalom utolsó frissítése: 2026-11-04


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](https://devoria.fr/hu/blog/titkos-api-kulcs-expo-app).

## Mire jó egy App Store Connect API kulcs

[Az Apple dokumentációja](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api) 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](https://devoria.fr/hu/blog/eas-submit-ios-expo-app-store-kozzetetel) ú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](https://developer.apple.com/help/app-store-connect/get-started/app-store-connect-api) 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](https://devoria.fr/hu/blog/apple-fejlesztoi-fiok-ar) ú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ó](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api) és [az App Store Connect súgója](https://developer.apple.com/help/app-store-connect/get-started/app-store-connect-api) 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](https://docs.fastlane.tools/app-store-connect-api/) 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](https://developer.apple.com/help/account/access/roles/) 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](https://www.revenuecat.com/docs/service-credentials/itunesconnect-app-specific-shared-secret/app-store-connect-api-key-configuration) jön. Az Expo útmutatója viszont [Admin szerepkört ad](https://github.com/expo/fyi/blob/main/creating-asc-api-key.md) 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](https://developer.apple.com/help/app-store-connect/get-started/app-store-connect-api). 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](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api) szerint:

1. **Nyisd meg a Users and Access részt**, majd az Integrations fület.
2. **Válaszd az App Store Connect API-t** a bal oldali oszlopban, majd a Team Keys fület.
3. **Kattints a Generate API Key gombra**, vagy a + gombra.
4. **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.
5. **Válaszd ki a szerepkört** az Access alatt, majd kattints a Generate gombra.
6. **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 `.p8` fájlt, mielőtt bezárod az oldalt.

Ezután jegyezd fel a két azonosítót. [Az Apple tokenekről szóló oldala](https://developer.apple.com/documentation/appstoreconnectapi/generating-tokens-for-api-requests) 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 `.p8` fájlomat, amíg más fiókok is olvashatták. Egy `chmod 600` megoldotta.
- **Eszközönként egy kulcs.** Az Apple engedi, hogy [több kulcsot generálj](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api), 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 ios` létrehozhat egy kulcsot, és az Expo szerverein tárolja. Ez a legegyszerűbb út.
- **Add meg az `eas.json`-ban.** A `submit` profil elfogadja az `ascApiKeyPath`, `ascApiKeyIssuerId` és `ascApiKeyId` mezőket. [Az eas.json referenciája](https://docs.expo.dev/eas/json/) 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](https://github.com/expo/eas-cli/blob/main/packages/eas-cli/README.md) az `EXPO_ASC_API_KEY_PATH`, `EXPO_ASC_KEY_ID` és `EXPO_ASC_ISSUER_ID` vá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](https://docs.expo.dev/build-reference/ios-capabilities/), 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](https://devoria.fr/hu/blog/ios-fejlesztoi-tanusitvany-provisioning-profile-expo) cikk részletezi.

## Használat fastlane-nel

A [fastlane](https://docs.fastlane.tools/app-store-connect-api/) 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:

```json
{
  "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](https://developer.apple.com/documentation/appstoreconnectapi/generating-tokens-for-api-requests):

- **Fejléc**: az `alg` értéke `ES256`, a `kid` a Key ID-d, a `typ` értéke `JWT`.
- **Tartalom, csapatkulcs**: `iss`, az Issuer ID-d; `iat`, a létrehozás ideje; `exp`, a lejárat ideje; `aud`, értéke `appstoreconnect-v1`.
- **Tartalom, egyéni kulcs**: `sub` = `user` az `iss` helyett.
- **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](https://pyjwt.readthedocs.io/en/stable/installation.html) 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.

```python
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:

```bash
curl -H "Authorization: Bearer $TOKEN" "https://api.appstoreconnect.apple.com/v1/apps"
```

2026. 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](https://developer.apple.com/help/app-store-connect/get-started/app-store-connect-api) szerint Account Holder vagy Admin fiókkal:

1. Nyisd meg a Users and Access részt, majd az Integrations fület.
2. Válaszd a Team Keys vagy az Individual Keys fület, majd kattints az Edit gombra.
3. Jelöld be a visszavonandó kulcsokat, majd Revoke Key.
4. Erősítsd meg a Revoke gombbal.

**Egy visszavont kulcs soha nem aktiválható újra.** [Az Apple](https://developer.apple.com/documentation/appstoreconnectapi/revoking-api-keys) 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](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/steps/utils/ios/AscApiClient.ts)”. Ezt az üzenetet és a többi feltöltési hibát [az EAS-es feltöltési hibák és javításuk](https://devoria.fr/hu/blog/eas-submit-ios-hibak-javitas) 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 `.p8` a 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](https://devoria.fr/hu/kits/ios) 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](https://devoria.fr/hu/blog/revenuecat-elofizetes-ios-app-beallitas) cikkben találod.

Ha az első kiadásodra készülsz, [csináld meg az ingyenes diagnózist](https://devoria.fr/hu/diagnostic): 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](https://devoria.fr/hu/expertise/alkalmazas-kozzetetele-app-store) 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.


## A projekted

[Review Kit](https://devoria.fr/hu/kits/app-review): Az App Store review checklistem, a javított Apple-elutasításaim, a Google Play checklist és három Claude Code skill. 17 990 Ft.

[iOS & Android Kit](https://devoria.fr/hu/kits/ios): Készítsd el iPhone- és Android-appodat Claude Code-dal: az appjaim kezdőkódja, az út a store-okig és az összes kit. 35 990 Ft.

[Diagnózis: mi választ el az iPhone-appodtól](https://devoria.fr/hu/diagnostic): 7 kérdés, 60 másodperc: megtudod, mi akadályoz valójában abban, hogy kiadd az iPhone-appodat, megkapod a 4 lépéses utadat és a hozzád illő kitet.
