python - 如何调用 Apple Music API 并避免 401

标签 python windows api jwt apple-musickit

我在尝试调用 Apple Music API 时一直收到 401 错误。我使用的是 Windows 机器,下面是它的 Python 代码。


import datetime
import jwt

secret = """-----BEGIN PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx
-----END PRIVATE KEY-----"""

kid = 'ABCDEFGHI'
teamId = 'JKLMNOPQRS'
alg = 'ES256'

headers = {
    'alg': alg,
    'kid': kid
}

payload = {
    'iss': teamId,
    'iat': 1518033023,
    'exp': 1518290267
}

if __name__ == '__main__':
    '''Create an auth token'''
    token = jwt.encode(payload, secret, algorithm=alg, headers=headers)

print '----CURL----'
print ("curl -v -H 'Authorization: Bearer %s' \"https://api.music.apple.com/v1/catalog/us/playlists/pl.14362d3dfe4b41f7878939782647e0ba\" " % (token))

最佳答案

我在字符串格式化运算符方面遇到了同样的问题。因此使用这个:

"""Create an auth token"""
token = jwt.encode(payload, secret, algorithm=alg, headers=headers)
token_str = token.decode('utf-8')  # converts bytes to string

url = "https://api.music.apple.com/v1/catalog/us/playlists/pl.14362d3dfe4b41f7878939782647e0ba" 

print("curl -v -H 'Authorization: Bearer" + token_str + "\"" + url + "\"")

进一步:我假设您想直接访问数据。为此,您可以使用 requests图书馆:

import requests
request_obj = requests.get(url, headers={'Authorization': "Bearer " + token_str})
json_dict = request_obj.json()

干杯!

关于python - 如何调用 Apple Music API 并避免 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48674386/

相关文章:

python - 使用 dataframe.loc 时无法将 dtyped [datetime64[ns]] 数组与 [bool] 类型的标量进行比较的错误

Python。如果文件名中包含特殊字符,则尝试使用文件名创建新目录时出错

api - Youtube播放器Iframe API跳过播放列表中的视频

python - 在django-tastypie中,选择可以显示在schema中吗?

python - 从列表中找到最接近的值?

python - 如何设置TCP套接字的初始序列号

windows - Tomcat8 作为 Windows 服务 - 监听网络套接字

windows - Windows 操作系统中的内核内存包含什么?

python - 问题理解混音如何在Win10下的python + QSoundEffect + winmm中工作

c# - 用 C# dll 替换 c api dll 而不影响客户端