Spotify Web APIを使うときに読むやつ

もやしくん
公開: , 最終更新:

はじめに

SpotifyのWeb APIを用いることで、コンテンツのメタデータの取得、再生のコントロールなどを行えます [1]。

この記事は、Spotifyで最近再生した曲をJSONで取得するときに、どのようにSpotify Web APIを用いるかのメモです。情報はこの記事の制作時点のものであり、その正確性は保証しません。

準備・環境

はじめに次を用意します:

注意

SpotifyのWeb APIを用いると、場合によってはアカウントの情報を入手できるようになります。これから先で入手するIDやtokenが外部に漏れることで、アカウント情報が流出しかねないことを留意してください。また、これから先の手順は、そのような情報に簡単にアクセスできないように用意された認証ステップでもあります。

流れ

  1. Spotify for Developersへアクセス
  2. appを作成する
  3. Client IDとClient secretを入手する
  4. User Authorizationを入手する
  5. Access tokenを入手する
  6. 最近再生した曲を取得する
  7. Access tokenをリフレッシュする

手順

Spotify for Developersへアクセス

Spotify for DevelopersのDashboardにアクセスします。Spotifyアカウントへのログインやアクセス承認が求められた場合は適宜対応してください。

appを作成する

Dashboardにある「Create app」をクリックし、appを作成します。表示される画面に従って、必要な情報を入力します:

App name
自身がわかりやすい適当な名前を入力
App description
自身がわかりやすい適当な説明を入力
Website
空欄でよい
Redirect URIs
リダイレクト先のURI。今回はすべて手動でやるので適当に入力(例: 「http://localhost/」)
Which API/SDKs are you planning to use?
Web APIにチェックをいれる

Client IDとClient secretを入手する

Dashboard上で作成したAppをクリックし、画面の遷移後「Settings」をクリックします。「Basic Information」タグの上部にClient IDとClient secretがあるので、メモ帳などにメモします(Client secretは「View client secret」をクリックすることで表示されます)。

次に、Client IDとClient secretをBase64でエンコードします:

echo -n "{Client ID}:{Client secret}" | base64

これによって得た文字列もメモしておきます。

User Authorizationを入手する

先ほど入手したClient IDをもとに、インターネットブラウザでつぎのURLにアクセスします:

https://accounts.spotify.com/authorize?response_type=code&client_id={入手したclient_id}&scope=user-read-recently-played&redirect_uri={指定したリダイレクト先}

今回は、最近再生した曲をゲットするために、scope=user-read-recently-playedを指定しました。 例えば、リダイレクト先がhttp://localhost/であるとき、前のURLにアクセスすると、

http://localhost/?code={code}

のように、リダイレクトされたリンクのあとにcodeがついてきます。このcodeもメモしておきます。

Access tokenを入手する

次を実行します:

curl -X POST \
--url https://accounts.spotify.com/api/token \
-H "content-type: application/x-www-form-urlencoded" \
-H "Authorization: Basic {Base64でエンコードしたやつ}" \
-d grant_type=authorization_code \
-d code={code} \
-d redirect_uri={指定したリダイレクト先}

そうすると、次が得られます:

{
    "access_token": "{access_token}",
    "token_type": "Bearer",
    "expires_in": 3600,
    "refresh_token": "{refresh_token}",
    "scope": "user-read-recently-played"
}

access_token、refresh_tokenをメモしておきます。

最近再生した曲を取得する

実際に、APIをつついて最近再生した曲を取得してみます。今回は最近再生した3曲を取得することにします(limit=3)。次を実行します:

curl --request GET \
--url https://api.spotify.com/v1/me/player/recently-played?limit=3 \
--header 'Authorization: Bearer {access_token}'

実行すると、曲のメタデータがJSONで入手できます。

Access tokenをリフレッシュする

先ほど入手したAccess tokenは1時間の有効期限があります。Access tokenをリフレッシュするには、次を実行します:

curl -X POST \
--url https://accounts.spotify.com/api/token \
-H "content-type: application/x-www-form-urlencoded" \
-H "Authorization: Basic {Base64でエンコードしたやつ}" \
-d grant_type=refresh_token \
-d refresh_token={refresh_token}

実行すると、Access tokenを入手したときと同様のJSONが得られます。

うまくいかないとき

原因1: 混乱している

次に挙げるものを、混乱して勘違いして入力していませんか?

原因2: Access tokenの有効期限が切れた

Access tokenをリフレッシュするか、改めてAccess tokenを入手してみましょう。

原因3: タイプミス

綴りやクォーテーションに抜けがないかなどを確認してみましょう。

もっと詳しく知りたいなら

今回は、Authorization Code Flowに則って実行していきました。この記事で行ったことが具体的に何をしているのかや、APIを用いて他のことをしてみたいならば、Spotify公式のドキュメントを見てみましょう。

参考

  1. Web API | Spotify for Developers