JWT Token生成方案
我当时找TestFlight的自动化方案找了半天没有一点点文章介绍,所以我就写一下。
以下是Api的文档,然后Api里面的Token怎么生成本文来赘述一下。
AppStoreConnect Api
生成一个ApiKey
- 管理员身份的账号登陆 AppStoreConnect
- 打开
用户和访问
,选择API Keys
- 点击
生成API Key
或者+
按钮 - 输入一个当前
key
的别名 - 选择
key
的规则 - 点击生成
- 然后就会有一个名称,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"