2017-07-26 9 views
0

私はrefresh_tokenを使用して、私が持っているSpotify access_tokenを(明らかに)リフレッシュしようとしています。ドキュメントには、例えば、カール文としてこれを与える:Refreshing Spotify access_token

curl -H "Authorization: Basic ZjM4Zj...Y0MzE=" -d grant_type=refresh_token -d refresh_token=NgAagA...NUm_SHo https://accounts.spotify.com/api/token

、ここで私のPythonのimplemtationです:私は戻って私が試した{"error":"invalid_client"}

取得の両方のケースで

payload = { 'grant_type': 'refresh_token', 'refresh_token': <REFRESH_TOKEN> } r = requests.post('https://accounts.spotify.com/api/token', data=payload, headers={'Authorization': 'Basic <CLIENT_SECRET>'})

私のclient_idとclient_secretを投稿データに渡しますが、私はいつもinvalid_clientを返します。ここにいる誰かが私がコードで渡す必要があると言ったが、コードはすでに使用/期限切れとなっている非常に短い期間のオブジェクトです。

私が間違っていることについて考えてみませんか?

答えて

0

私が見ることができる唯一の問題はあなたが書くということである:

headers={'Authorization': 'Basic <CLIENT_SECRET>'} 

それは、あなたの表記を使用して、あるべきとき:

headers={'Authorization': 'Basic ' + base64.b64encode('<CLIENT_ID>:<CLIENT_SECRET>')} 

しかし、あなたが使用しているので、さらに簡体することができることリクエスト。 http://docs.python-requests.org/en/latest/user/authentication/ヘッダーだけを削除し、代わりに認証に置き換えます:ここで説明するよう

auth=('<CLIENT_ID>', '<CLIENT_SECRET>') 

しかし、私は、これはあなたが何とかたリフレッシュトークンを取得するために管理しているので、どちらかあなたのコード内で実際に間違っているものではないことを推測します以前に一度正しく認証されている必要があります。

+0

ビンゴ!リクエストに対するauthパラメータがそれを修正しました。私はauthとrefreshトークンを持っていました。なぜなら、最初のOAuth呼び出しはOAuth NPMを使ってJavascriptで行われ、リフレッシュコードはPythonで行われていたからです。ありがとう、@joon。 –