App Store Connect API -avain (.p8): luonti ja käyttö
Kirjoittaja: Mehdi Azizi
Julkaistu , 10 min
App Store Connect API -avaimen (.p8) voi ladata vain kerran. Rooli, Issuer ID, Key ID, peruutus sekä käyttö Expon, fastlanen tai oman skriptin kanssa.
App Store Connect API -avaimen avulla työkalu, kuten EAS, fastlane, RevenueCat tai oma skriptisi, voi toimia tililläsi ilman salasanaasi ja kaksivaiheista tunnistautumista. Apple säilyttää avaimen julkisen puolen, ja sinä lataat yksityisen puolen, .p8-tiedoston, vain kerran. Tällä tiedostolla, Issuer ID:llä ja Key ID:llä allekirjoitat tunnisteita, jotka ovat useimmissa pyynnöissä voimassa enintään 20 minuuttia.
Julkaisen iOS-appini, muun muassa TradaZenin ja Noleran, Expolla. Tiimiavain App Manager -roolilla palvelee RevenueCatia, Expo-buildejani ja komentorivityökalua, jolla muokkaan sovellussivujani. Tämä opas perustuu Applen, Expon ja fastlanen sivuihin, jotka luin uudelleen 3. marraskuuta 2026. Älä sekoita tätä palveluiden avaimiin, jotka päätyvät sovelluksen koodiin: niistä kerrotaan artikkelissa salainen API-avain Expo-sovelluksessa.
Mitä App Store Connect API -avain tekee
Applen dokumentaation mukaan App Store Connect API vaatii JWT-tunnisteen jokaiseen pyyntöön. Luot sen ja allekirjoitat sen yksityisellä avaimellasi. Avain toimii vain tämän API:n kanssa: et voi käyttää sitä muissa Applen palveluissa.
Sen hyöty mahtuu yhteen lauseeseen: kenenkään ei tarvitse hyväksyä kirjautumista. Apple ID:si törmää kaksivaiheiseen tunnistautumiseen, mikä estää kaiken automatisoinnin. Opas EAS Submit iOS näyttää, mitä tämä muuttaa Expo-sovelluksen lähettämisessä.
Ensin: pyydä pääsy API:in
Ensimmäistä avainta ei voi luoda saman tien. App Store Connectin ohje on selvä: Account Holderin on ensin pyydettävä pääsyä API:in. Hän avaa Users and Access -osion, klikkaa Integrations ja sitten Request Access. Apple käsittelee pyynnön tapauskohtaisesti.
Account Holder on henkilö, joka rekisteröi tilin. Jos olet aloittelija, se olet sinä: opas Applen kehittäjätili käy rekisteröinnin läpi.
Tiimiavain vai henkilökohtainen avain
Apple tarjoaa kahta avaintyyppiä. Tässä niiden erot, koottuna dokumentaatiosta ja App Store Connectin ohjeesta:
| Kriteeri | Tiimiavain | Henkilökohtainen avain |
|---|---|---|
| Kuka voi luoda | Account Holder tai Admin | Lähes kuka tahansa |
| Käytettävissä olevat sovellukset | Kaikki, poikkeuksetta | Käyttäjän omat |
| Oikeudet | Valittu rooli | Käyttäjän oikeudet |
| Avainten määrä | Useita | Yksi aktiivinen per henkilö |
| Sertifikaatit ja profiilit | Kyllä, roolin mukaan | Ei |
| Myynti, talous, notaryTool | Roolin mukaan | Ei |
| Tunnisteen kenttä | iss = Issuer ID | sub = user |
"Lähes kuka tahansa" tarkoittaa Applen mukaan: Account Holder, Admin, App Manager, Customer Support, Developer ja Marketing, ellei Admin tai Account Holder ole poistanut heiltä oikeutta luoda henkilökohtaista avainta.
Expoa tai fastlanea varten valitse tiimiavain. Henkilökohtaisella avaimella ei ole pääsyä provisiointirajapintoihin, joilla luodaan sertifikaatteja ja profiileja. fastlanen dokumentaatio vahvistaa tämän: tiimiavaimet vaaditaan kaikkeen provisiointiin liittyvään.
Minkä roolin annat avaimelle
Tiimiavain pääsee kaikkiin tilin sovelluksiin roolista riippumatta. Rooli ratkaisee, mitä se voi tehdä. Apple varoittaa, että Admin-avain voi luoda ja poistaa käyttäjiä: anna pienin rooli, joka kattaa käyttötarpeesi. Alla olevat oikeudet tulevat Applen roolitaulukosta.
| Avaimen käyttö | Roolit, jotka sallivat sen |
|---|---|
| Buildien lähettäminen | Admin, App Manager, Developer |
| TestFlight-buildien hallinta | Admin, App Manager |
| Sertifikaattien ja profiilien luonti | Admin, App Manager |
| Sovelluksen lähettäminen arvioon | Admin, App Manager |
| Tuotteiden ja hintojen tuonti (RevenueCat) | Vähintään App Manager |
| Muiden tiimiavainten luonti | Admin |
RevenueCat-rivi on peräisin sen dokumentaatiosta. Expon opas taas antaa avaimelle Admin-roolin. Omissa sovelluksissani App Manager riittää: EAS luo sillä jakeluprofiilit, ja RevenueCat tuo tuotteet.
Kun avain on luotu, et voi enää muuttaa sen nimeä etkä roolia. Muuttaaksesi niitä sinun on peruttava avain ja luotava uusi.
Tiimiavaimen luonti vaihe vaiheelta
Tarvitset Admin- tai Account Holder -tilin. Applen mukaan:
- Avaa Users and Access ja sitten Integrations-välilehti.
- Valitse App Store Connect API vasemmasta sarakkeesta ja sitten Team Keys -välilehti.
- Klikkaa Generate API Key tai +-painiketta.
- Anna avaimelle nimi. Se on vain sinua varten, se ei ole osa avainta. Nimeä se sen työkalun mukaan, joka sitä käyttää.
- Valitse rooli kohdasta Access ja klikkaa Generate.
- Lataa yksityinen avain Download API Key -linkistä.
Latauslinkki katoaa heti, kun olet ladannut tiedoston, eikä Apple säilytä siitä kopiota. Tallenna
.p8talteen ennen kuin suljet sivun.
Kirjaa sitten ylös kaksi tunnistetta. Applen tunnistesivun mukaan Issuer ID näkyy Integrations-sivun yläosassa Copy-painikkeen kanssa. Key ID näkyy aktiivisten avainten listassa: vie hiiri sen päälle, niin Copy Key ID tulee näkyviin. Issuer ID on sama kaikille tilin tiimiavaimille. Key ID on avainkohtainen.
Henkilökohtainen avain on nopeampi: avaa käyttäjäprofiilisi, vieritä kohtaan Individual API Key ja klikkaa Generate API Key. Senkin voi ladata vain kerran.
.p8-tiedoston säilytys
Apple pyytää käsittelemään avainta kuin salasanaa: älä jaa sitä, älä tallenna sitä koodirepositorioon äläkä koskaan upota sitä sovelluksen koodiin. Oma rutiinini:
- Kansio projektin ulkopuolella, tai jatkuvan integraation työkalusi salaisuuksien hallinta.
- Avainkansio
.gitignore-tiedostoon, jos tiedoston täytyy olla projektissa lähetyksen ajan. - Tiukat oikeudet. Eräs App Store Connectin komentorivityökalu hylkäsi
.p8-tiedostoni niin kauan kuin muut käyttäjätilit pystyivät lukemaan sen.chmod 600ratkaisi ongelman. - Yksi avain per työkalu. Apple antaa luoda useita avaimia haluamillasi rooleilla.
Viimeistä kohtaa en noudattanut alussa. App Manager -avaimeni palvelee yhtä aikaa RevenueCatia, buildejani ja sovellussivutyökaluani. Jos joudun perumaan sen, kolme työkalua kaatuu kerralla. Jos aloittaisin alusta, loisin yhden avaimen per työkalu, jotta voisin katkaista yhden koskematta muihin.
Käyttö Expon kanssa
Kolme tapaa antaa avain EAS:lle:
- Anna EAS:n hallita sitä.
eas credentials --platform iosvoi luoda avaimen ja säilyttää sen Expon palvelimilla. Tämä on yksinkertaisin tie. - Määritä se
eas.json-tiedostossa.submit-profiili hyväksyy kentätascApiKeyPath,ascApiKeyIssuerIdjaascApiKeyId. eas.jsonin referenssin mukaan nämä kentät hyväksyvät ympäristömuuttujia, kuten$ASC_API_KEY_PATH. - Välitä se ympäristömuuttujina. EAS CLI:n repositorio dokumentoi muuttujat
EXPO_ASC_API_KEY_PATH,EXPO_ASC_KEY_IDjaEXPO_ASC_ISSUER_ID. Henkilökohtaisella avaimella Issuer ID jätetään pois.
Buildeihin liittyy yksi rajoitus: Expo täsmentää, ettei virallinen API osaa liittää App Groupia, Merchant ID:tä tai CloudKit-säiliötä. Silloin tarvitaan kirjautuminen Apple ID:lläsi paikallisesti. Koin tämän Noleran kanssa sen widgetin sovellusryhmän kohdalla: avain otti ominaisuuden käyttöön, mutta ei liittänyt ryhmää. Tein liittämisen Applen kehittäjäportaalissa. Jos ominaisuuksien synkronointi jumittaa, EXPO_NO_CAPABILITY_SYNC=1 poistaa sen käytöstä, ja otat ominaisuuden itse käyttöön sovellustunnisteessa. Buildien allekirjoitus käydään läpi artikkelissa iOS-sertifikaatti ja provisioning profile.
Käyttö fastlanen kanssa
fastlane lukee avaimen JSON-tiedostosta. Kentät key_id, issuer_id ja key, eli .p8-tiedoston sisältö, ovat pakollisia. duration ja in_house ovat valinnaisia. Esimerkkiarvot:
{
"key_id": "XXXXXXXXXX",
"issuer_id": "your-issuer-id",
"key": "-----BEGIN PRIVATE KEY-----\nMIGT...\n-----END PRIVATE KEY-----",
"duration": 1200,
"in_house": false
}
Välität tämän tiedoston sitten toiminnolle, esimerkiksi fastlane pilot distribute --api_key_path fastlane/cle.json. Fastfilessa app_store_connect_api_key-toiminto ottaa parametrit key_id, issuer_id ja key_filepath. Istunnon kesto on enintään 1 200 sekuntia eli 20 minuuttia. Kaikki toiminnot eivät tue avainta: fastlane mainitsee esimerkiksi, etteivät produce ja pem toimi API-avaimella.
Käyttö omassa skriptissä
Ilman työkalua teet tunnisteen itse. Apple määrittää reseptin:
- Otsake:
algonES256,kidon Key ID:si,typonJWT. - Sisältö, tiimiavain:
iss, Issuer ID:si;iat, luontiaika;exp, vanhenemisaika;aud, jonka arvo onappstoreconnect-v1. - Sisältö, henkilökohtainen avain:
subonuseriss:n sijaan. - Kesto: yli 20 minuuttia, niin Apple hylkää tunnisteen useimmissa pyynnöissä.
Pythonilla käytät PyJWT-kirjastoa ja sen kryptografiariippuvuutta, jotka asennetaan sen dokumentaation mukaan komennolla pip install pyjwt[crypto]. Macin päätteessä käytä lainausmerkkejä: pip install "pyjwt[crypto]", muuten zsh ei hyväksy hakasulkeita.
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)
Sitten lähetät sen Authorization-otsakkeessa, kuten Applen esimerkissä:
curl -H "Authorization: Bearer $TOKEN" "https://api.appstoreconnect.apple.com/v1/apps"
Ajoin tämän skriptin 3. marraskuuta 2026 kertakäyttöisellä avaimella, jonka loin omalla koneellani: tunnisteen otsake ja sisältö vastaavat Applen sivua, ja ES256-allekirjoitus todentuu. En lähettänyt sitä Applen API:in tällä testiavaimella, koska sitä ei ole olemassa Applella. Käytä samaa tunnistetta uudelleen niin kauan kuin se on voimassa: Apple suosittelee tätä paremman suorituskyvyn vuoksi.
Avaimen peruminen
Peru avain heti, kun se katoaa, vaarantuu tai mikään työkalu ei enää käytä sitä. App Store Connectin ohjeen mukaan Account Holder- tai Admin-tilillä:
- Avaa Users and Access ja sitten Integrations.
- Valitse Team Keys tai Individual Keys ja klikkaa Edit.
- Valitse perottavat avaimet ja sitten Revoke Key.
- Vahvista valitsemalla Revoke.
Perutttua avainta ei voi koskaan aktivoida uudelleen. Apple näyttää sen 30 päivän ajan kohdassa Revoked. Jokaisen sitä käyttäneen työkalun tunnistautuminen epäonnistuu. Expossa viesti on "App Store Connect rejected the API authentication credentials". Tämä viesti ja muut lähetysvirheet selitetään artikkelissa EAS-lähetyksen virheet ja niiden korjaus. Jos avain ei ole vaarantunut, valmistele uusi ennen kuin katkaiset vanhan. Jos se on vaarantunut, Apple pyytää perumaan sen välittömästi.
Oman henkilökohtaisen avaimesi kohdalla: profiilisi, Individual API Key ja sitten Revoke.
Oma .p8-avaimen tarkistuslistani
- Account Holder on pyytänyt pääsyä API:in.
- Avain on tiimiavain, jos sitä käytetään buildeihin tai profiileihin.
- Sen rooli on pienin, joka kattaa käytön, ja sen nimi kertoo, mikä työkalu sitä käyttää.
.p8on tallessa repositorion ulkopuolella, tiukoilla oikeuksilla ja salatulla varmuuskopiolla.- Issuer ID ja Key ID on kirjattu erikseen, ilman tiedostoa.
- Jokaisella työkalulla on oma avaimensa, jotta voit perua vain yhden.
Automatisoi julkaisu ilman, että avaimesi vuotaa
Avain on vain yksi osa matkaa. iOS & Android Kit lähtee liikkeelle appieni pohjakoodista tilauksineen ja kulkee neljä vaihetta App Storeen asti, omaan tahtiisi. Jos kytket RevenueCatin tällä avaimella, koko asennus löytyy artikkelista RevenueCat ja iOS:n sovelluksen sisäinen tilaus.
Jos valmistelet ensimmäistä julkaisuasi, tee ilmainen diagnoosi: se kertoo, mikä sinua oikeasti jarruttaa, ja lähettää sinulle tarkistuslistani Applen hylkäysten välttämiseen. Sivu sovelluksen julkaiseminen App Storessa käy läpi jokaisen vaiheen sovellussivusta hyväksyntään.
Usein kysytyt kysymykset
Miten App Store Connect API -avain luodaan?
Account Holder pyytää ensin pääsyä API:in. Sen jälkeen Admin avaa Users and Access -osion, Integrations-välilehden, App Store Connect API:n ja Team Keys. Hän klikkaa Generate API Key, valitsee nimen ja roolin, luo avaimen ja lataa .p8-tiedoston.
Voiko kadonneen .p8-avaimen ladata uudelleen?
Ei. Tiedoston voi ladata vain kerran, eikä Apple säilytä siitä kopiota. Peru kadonnut avain, luo uusi ja päivitä jokainen työkalu, joka käytti sitä.
Mistä löydän Issuer ID:n ja Key ID:n?
App Store Connectissa, Users and Access -valikossa, Integrations-välilehdellä. Issuer ID näkyy sivun yläosassa. Key ID löytyy aktiivisten avainten listasta. Henkilökohtainen avain ei käytä Issuer ID:tä.
Minkä roolin annan Expon käyttämälle avaimelle?
Expon opas antaa Admin-roolin. Applen roolitaulukon mukaan App Manager riittää buildien lähettämiseen sekä sertifikaattien ja profiilien luontiin. Se on oman avaimeni rooli, ja käytän sitä Expo-buildeihini.
Voiko API-avaimen roolia muuttaa?
Ei. Apple ei salli avaimen nimen eikä roolin muuttamista luonnin jälkeen. Peru avain ja luo uusi oikealla roolilla.
Vanheneeko App Store Connect API -avain?
Applen sivuilla ei mainita avaimen vanhenemista, ainoastaan sen peruminen. Sillä allekirjoitetut tunnisteet vanhenevat, useimmissa pyynnöissä enintään 20 minuutissa.

