Spotify API授权+令牌密钥错误-Python3

时间:2020-04-01 21:21:01

标签: python api spotify spotipy

我遇到了这个问题,在我的脚本中,我有些困惑。在过去的几周中,我一直在运行该脚本,没有任何问题,现在我得到了令牌的KeyError。

这是我的代码:

# IMPORTS
import os
import re
import requests
import json
import numpy as np
import pandas as pd
import time
from pprint import pprint as pp
import datetime as dt
import sys 
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
acc_path = "../../access/"
sys.path.append(acc_path)

pd.set_option('display.max_rows', 10000)
pd.set_option('display.max_columns', 100)
pd.set_option('display.max_colwidth', -1)

# Spotify Credentials
sp_url = 'https://api.spotify.com/v1/'
client_id = os.environ.get('SPOT_CLIENT_ID')
client_secret = os.environ.get('SPOT_CLIENT_SECRET')
output_data = '/users/Desktop/file_date.csv'
spot_scopes = os.environ.get('SPOT_SCOPES')
spot_user_name = os.environ.get('SPOT_USER_NAME') # spotify account username

sp_acc = requests.post('https://accounts.spotify.com/api/token', data = {'grant_type' : 'client_credentials'}, 
                       auth = (client_id, client_secret))
sp_bear_head = {'Authorization' : 'Bearer' + str(sp_acc.json()['access_token'])}

KeyERROR

---> 31 sp_bear_head = {'Authorization' : 'Bearer' + str(sp_acc.json()['access_token'])}

KeyError: 'access_token'

我检查了bash以确保客户端ID,秘密作用域等都正确,并且可以确认这不是问题。这里的任何方向都将非常有帮助!

1 个答案:

答案 0 :(得分:2)

它之所以起作用而不是现在不起作用,是由于access token到期了。

令牌的到期时间由Spotify确定,因此您只需要解决它们的设置约束。

也就是说,您可以根据Spotify在请求令牌(expires_in时在响应中发回的属性https://accounts.spotify.com/api/token来预测何时需要生成/使用新令牌。 expires_in属性是一个整数,它告诉您令牌将使用多少秒。如their authorization documentation所示,返回的expires_in属性值为3600(秒)或1小时。

该小时结束后,请使用您的refresh_token申请新令牌。