環(huán)境配置
以 python3
環(huán)境為例
1.安裝 jwt
pip3 install PyJWT
2.安裝 requests
pip3 install requests
物料配置
一、生成 kid
要生成密鑰伙菊,需在 App Store Connect 中具有管理員角色或帳戶持有人角色移剪。登錄 App Store Connect 并完成以下步驟:
- 選擇 “用戶和訪問”,然后選擇 “密鑰” 子標(biāo)簽頁。
- 在 “密鑰類型” 下選擇 “App內(nèi)購買項(xiàng)目”会喝。
- 單擊 “生成API內(nèi)購買項(xiàng)目密鑰”(如果之前創(chuàng)建過澡罚,則點(diǎn)擊 “添加(+)” 按鈕新增。)敬尺。
- 輸入密鑰的名稱(隨意)枚尼。
- 單擊 “生成”。
二砂吞、生成 Issuer ID (iss)
同時(shí)下載密碼文件署恍,以作為生成 JWT
的秘鑰使用。注意:秘鑰僅能下載一次蜻直,請妥善保管盯质、備份!
有了以上這些參數(shù)及秘鑰概而,我們就可以生成 jwt
去調(diào)用 Apple Api 了呼巷。
Python 示例腳本
下面是一個(gè)批量為app發(fā)送內(nèi)測邀請郵件的腳本,使用的是 Apple Api : api.appstoreconnect.apple.com/v1/userInvitations
# import json
import time
from datetime import datetime, timedelta
import jwt
import requests
def get_token():
# 這里替換成剛下載的秘鑰
private_key = open('/xx/xx/xxx/xxxx.p8', 'r').read()
# 構(gòu)造header
header = {
"alg": 'ES256',
#這里替換為生成的kid
"kid": '這里替換為生成的kid',
"typ": "JWT"
}
# 構(gòu)造payload
payload = {
# 這里替換為生成的iss
"iss": 'xxxx-xxxxx-xxxxx',
"exp": int(time.mktime((datetime.now() + timedelta(minutes=20)).timetuple())),
"aud": "appstoreconnect-v1"
}
token = jwt.encode(payload=payload, key=private_key,
algorithm='ES256', headers=header)
print("調(diào)用API的token:", token)
return token
# 替換為你的訪問憑據(jù)
access_token = get_token()
# 替換為你要添加內(nèi)測人員的應(yīng)用ID
app_id = "xxxxxx"
# 替換為你要添加的內(nèi)測人員的列表
users = [
{"email": "xxxxx@xx.com","firstName": "a","lastName": "cs"}
]
# 批量邀請用戶
def invite_users(email, firstName, lastName ):
url = "https://api.appstoreconnect.apple.com/v1/userInvitations"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"data": {
"type": "userInvitations",
"attributes": {
"email": email,
"firstName": firstName,
"lastName": lastName,
"roles": ["DEVELOPER"],
"allAppsVisible": True
}
}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 201:
print("用戶邀請成功J旯濉:", response.content)
else:
print("用戶邀請失斖鹾贰:", response.text)
# 調(diào)用函數(shù)批量邀請用戶
for user in users:
email = user["email"]
firstName = user["firstName"]
lastName = user["lastName"]
invite_users(email, firstName , lastName)
注意:每一次 api 調(diào)用,都得在 headers
里面塞入生成的 token餐曼,且 token 目前 Apple 限制能設(shè)置的最長有效周期為 20 分鐘压储。