2017-07-12 2 views
0

Spotify Web APIを使用してSpotifyデバイスにアクセスしようとしています。私がアクセスしようとしている特定のAPIエンドポイントについてはlinkを参照してください。私はmacOS SierraのvirtualenvでPython 2.7を使用しています。Pythonがライブラリヘッダ認可の問題を要求します

私はすでにいくつかの他の関数呼び出しを行っていたので、それが動作することを知っている認証トークンを持っています。しかし、これはSpotipy関数呼び出しに対するhttp要求を抽象化するSpotipyラッパーとは対照的に、要求ライブラリーを使用するのは初めてです。

上記のリンクの文書ヘッダーに私の認証トークンを渡す必要があります。リクエストモジュールでは、キーと値の両方が文字列である辞書としてヘッダーに渡す必要があることを理解しています。ここで

は私が要求を行うために使用しているコードです:

token_string = token.encode('ascii','ignore') 
    print type(token_string) 
    headers = {"Authorization":token_string} 
    r=requests.get("https://api.spotify.com/v1/me/player/devices", headers=headers) 

私は要求モジュールは、ユニコードの上に文字列を好むとトークンがUnicodeでもともと読んでいるので、私は文字列としてトークンをコードしています。

認可の問題である400エラー(印刷内容は以下を参照)が引き続き発生します。私は問題が私が正しく認証トークンを渡していないかもしれないと思う。誰にもこれについての洞察はありますか?

<Response [400]> 

答えて

0

掲載ページに彼らの例から判断すると、あなたは(のための「なぜ?」5.トークンは、アプリケーションSpotify Web API Authorization Guideセクションに戻されます確認してください)あなたの承認のためBearer接頭辞を使用する必要がありますので、 : - ちょうどtoken_stringで額面でそれを保存し、あなたのトークンが有効であることを

headers = {"Authorization", "Bearer {}".format(token_string)} 
r = requests.get("https://api.spotify.com/v1/me/player/devices", headers=headers) 

を提供し、それはあなたが任意のエンコーディングまたは何もする必要はありませんが、動作するはずです。

すでにSpotify API examplesページで参照されているspotipyのような、それらの1つを使用しない理由を自分で悩ます代わりに、Python Spotifyクライアントモジュールがあります。

+0

「ベアラー」を追加してコールが機能しました。早速のご返事ありがとうございます。またSpotipyを使用していますが、Spotipyはデバイスや再生用の機能を備えていないようですが、残念ながら要求ライブラリを直接経由する必要があります。 Spotipyラッパーを使ってこれらの呼び出しを行う方法があれば、私はそれを調べることに興味があります。 –

関連する問題