Авторизация Spotify API + ошибка токена - python3 - PullRequest
0 голосов
/ 02 апреля 2020

Я сталкиваюсь с этой проблемой, где с моим сценарием, и я немного озадачен. В течение последних нескольких недель я без проблем запускал этот скрипт, и теперь я получаю 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, чтобы убедиться, что идентификатор клиента, секретные области и т. Д. c. все правильно и может подтвердить, что это не проблема. Любое направление здесь будет очень полезно!

1 Ответ

2 голосов
/ 02 апреля 2020

Причина, по которой он работал раньше, а не сейчас, связана с истечением access token.

Время истечения токена определяется Spotify, поэтому вам просто нужно обойти их установленные ограничения.

При этом вы можете ожидать, что новый токен необходимо будет сгенерировать / использовать на основе свойства expires_in, которое Spotify отправляет обратно в ответ при запросе токена (https://accounts.spotify.com/api/token). Свойство expires_in является целым числом и указывает, на сколько секунд токен будет полезен. Как видно из их документации по авторизации , свойство expires_in возвращается со значением 3600 (секунд) или 1 час.

По истечении этого часа используйте refresh_token для запросить новый токен.

...