parent
05201f8fea
commit
fae034676a
@ -0,0 +1,6 @@ |
||||
-----BEGIN PRIVATE KEY----- |
||||
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgOzAYvVe2plgEO65I |
||||
rzpfDiorOSshVWOZyYyYxKukiMOgCgYIKoZIzj0DAQehRANCAATr5XT5byC/B3CD |
||||
3k5HZAVkcgnIpGIhLn/zcSoINnHpNoykKfNRcPAViyF5oPapP6dzdhzfXpPAschh |
||||
eKfajgao |
||||
-----END PRIVATE KEY----- |
||||
@ -0,0 +1 @@ |
||||
eyJhbGciOiJFUzI1NiIsImtpZCI6IkpaQzlMNzZURFQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiI2OWE2ZGU4My0wMmYyLTQ3ZTMtZTA1My01YjhjN2MxMWE0ZDEiLCJpYXQiOjE3MDUzMTQzMTYsImV4cCI6MTcwNTMxNzYxNiwiYXVkIjoiYXBwc3RvcmVjb25uZWN0LXYxIiwiYmlkIjoic3RheC5TbGFzaFBva2VyLm5vc2VibGVlZCJ9.3816SQjAWaFcsX-VRNLb7mHbx3EiqloqufIq9WB8oSSBlPs89H9rMdEvnq525ovYlNaoZIEnpsGPgHiPsWZAbA |
||||
@ -0,0 +1,54 @@ |
||||
import jwt |
||||
import datetime as dt |
||||
|
||||
key_id = 'JZC9L76TDT' |
||||
alg = 'ES256' |
||||
typ = 'JWT' |
||||
issue_id = '69a6de83-02f2-47e3-e053-5b8c7c11a4d1' |
||||
aud = 'appstoreconnect-v1' |
||||
bid = 'stax.SlashPoker.nosebleed' |
||||
|
||||
# Define issue timestamp. |
||||
issued_at_timestamp = int(dt.datetime.now().timestamp()) |
||||
# Define expiration timestamp. May not exceed 20 minutes from issue timestamp. |
||||
expiration_timestamp = issued_at_timestamp + 55*60 |
||||
|
||||
# Define JWT headers. |
||||
headers = dict() |
||||
headers['alg'] = alg |
||||
headers['kid'] = key_id |
||||
headers['typ'] = typ |
||||
|
||||
# Define JWT payload. |
||||
payload = dict() |
||||
payload['iss'] = issue_id |
||||
payload['iat'] = issued_at_timestamp |
||||
payload['exp'] = expiration_timestamp |
||||
payload['aud'] = aud |
||||
payload['bid'] = bid |
||||
|
||||
# Path to signed private key. |
||||
KEY_FILE = 'AuthKey_JZC9L76TDT.p8' |
||||
|
||||
with open(KEY_FILE,'r') as key_file: |
||||
key = ''.join(key_file.readlines()) |
||||
|
||||
client_secret = jwt.encode( |
||||
payload=payload, |
||||
headers=headers, |
||||
algorithm=alg, |
||||
key=key |
||||
) |
||||
|
||||
with open('jwt_signed.txt', 'w') as output: |
||||
output.write(client_secret) |
||||
|
||||
|
||||
# Usage, after run this code by python3 |
||||
# get token from `client_secret.txt` and replace to [signed token] |
||||
# Remember expired time maximum is 20 minutes |
||||
# |
||||
# curl -v -H 'Authorization: Bearer [signed token]' "https://api.storekit.itunes.apple.com/inApps/v1/notifications/test" |
||||
# curl -v -H 'Authorization: Bearer [signed token]' "https://api.storekit-sandbox.itunes.apple.com/inApps/v1/notifications/test" |
||||
# |
||||
# More detail https://developer.apple.com/documentation/appstoreconnectapi/generating_tokens_for_api_requests |
||||
Loading…
Reference in new issue