JWT Token生成方案
我當時找TestFlight的自動化方案找了半天沒有一點點文章介紹,所以我就寫一下。
以下是Api的文檔,然后Api里面的Token怎么生成本文來贅述一下。
AppStoreConnect Api
生成一個ApiKey
- 管理員身份的賬號登陸 AppStoreConnect
- 打開
用戶和訪問,選擇API Keys - 點擊
生成API Key或者+按鈕 - 輸入一個當前
key的別名 - 選擇
key的規(guī)則 - 點擊生成
- 然后就會有一個名稱,keyid,下載鏈接和其他信息。
- 點擊下載 (這個東西很寶貴,不要外傳)
生成一個Request Token
- 生成一個
JWT Header - 生成一個
JWT Payload - 生成一個
JWT
生成一個 JWT Header
- Key id :在
用戶和訪問->API Keys里面
| Header Field | Value |
|---|---|
| alg - 加密類型 | ES256 |
| kid - Key id | {KeyID} |
| typ - Token 類型 | JWT |
{
"alg": "ES256",
"kid": "2X9R4HXF34",
"typ": "JWT"
}
生成JWT Payload
- issuer id:在
用戶和訪問->API Keys里面
| Payload Field | Value |
|---|---|
| iss - Issuer id | {issue id} |
| exp - 過期時間 | {exp time} |
| aud - Audience | appstoreconnect-v1 |
{
"iss": "57246542-96fe-1a63-e053-0824d011072a",
"exp": 1528408800,
"aud": "appstoreconnect-v1"
}
生成一個 JWT
- Private Key:ApiKey中有個下載鏈接,下載下來的
AuthKey_xxxx.p8文件
使用上面生成的 jwt header , jwt payload ,Private key使用gen_jwt_s.rb生成一個
生成方案如下
sudo gem install jwt
ruby gen_jwt_s.rb
然后按照指引一步步操作即可
- 輸入
kid - 輸入
issueid - 輸入
AuthKey_xxxx.p8文件地址
這個是我用rb寫的一個簡單的demo,想獲得其他語言的支持請看JWT.io
使用 Request
替換以下的[signed token]為生成的token即可使用
curl -v -H 'Authorization: Bearer [signed token]'
"https://api.appstoreconnect.apple.com/v1/apps"