質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

Spotify Web APIのアクセストークンをcurlで取りたい

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 452

DrqYuto

score 306

curl -X "POST" -H "Authorization: Basic e2...Z9" \
-d grant_type=client_credentials https://accounts.spotify.com/api/token


% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed

0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    92  100    63  100    29    364    167 --:--:-- --:--:-- --:--:--   531

となります。アクセストークが見つかりません。

curl -v -X "POST" -H "Authorization: Basic e2...Z9" \
-d grant_type=client_credentials https://accounts.spotify.com/api/token


-vすると、

Note: Unnecessary use of -X or --request, POST is already inferred.
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed

0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 104.199.240.211...

  • TCP_NODELAY set
  • Connected to accounts.spotify.com (104.199.240.211) port 443 (#0)
  • ALPN, offering h2
  • ALPN, offering http/1.1
  • successfully set certificate verify locations:
  •   CAfile: /etc/ssl/certs/ca-certificates.crt
    CApath: /etc/ssl/certs
    } [5 bytes data]
  • (304) (OUT), TLS handshake, Client hello (1):
    } [512 bytes data]
  • (304) (IN), TLS handshake, Server hello (2):
    { [109 bytes data]
  • NPN, negotiated HTTP2 (h2)
    { [5 bytes data]
  • TLSv1.2 (IN), TLS handshake, Certificate (11):
    { [2481 bytes data]
  • TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    { [333 bytes data]
  • TLSv1.2 (IN), TLS handshake, Server finished (14):
    { [4 bytes data]
  • TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    } [70 bytes data]
  • TLSv1.2 (OUT), TLS change cipher, Client hello (1):
    } [1 bytes data]
  • TLSv1.2 (OUT), TLS handshake, Unknown (67):
    } [36 bytes data]
  • TLSv1.2 (OUT), TLS handshake, Finished (20):
    } [16 bytes data]

0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]

  • SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
  • ALPN, server did not agree to a protocol
  • Server certificate:
  •  subject: C=SE; L=Stockholm; O=Spotify AB; CN=*.spotify.com
  •  start date: May 16 00:00:00 2017 GMT
  •  expire date: Jul 29 12:00:00 2020 GMT
  •  subjectAltName: host "accounts.spotify.com" matched cert's "*.spotify.com"
  •  issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA
  •  SSL certificate verify ok.
  • Using HTTP2, server supports multi-use
  • Connection state changed (HTTP/2 confirmed)
  • Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
    } [5 bytes data]
  • Using Stream ID: 1 (easy handle 0x55a10a14a580)
    } [5 bytes data]

POST /api/token HTTP/2
Host: accounts.spotify.com
User-Agent: curl/7.58.0
Accept: */*
Authorization: Basic e2Y2M2ZmMDUzOTQyMTRmY2ZhMWE1MmQ1MDdmODk4ZjUxfTp7MWRlNWI1NmIyYjEyNDdhM2JkNTk2NmM5ZWJlZDNhMDZ9
Content-Length: 29
Content-Type: application/x-www-form-urlencoded

{ [5 bytes data]

  • Connection state changed (MAX_CONCURRENT_STREAMS updated)!
    } [5 bytes data]
  • We are completely uploaded and fine
    { [5 bytes data]
    < HTTP/2 400 
    < server: nginx
    < date: Fri, 21 Jun 2019 12:00:01 GMT
    < content-type: application/json
    < content-length: 63

    { [63 bytes data]

100    92  100    63  100    29    351    162 --:--:-- --:--:-- --:--:--   511

  • Connection #0 to host accounts.spotify.com left intact

となり、アクセストークンが帰ってきません。

参考

Spotify Web APIの使い方 | DevelopersIO
https://dev.classmethod.jp/etc/about-using-of-spotify-api/

  Client Credentials Flowでアクセストークンを取得
まずは、Client IDとClient SecretをBase64でエンコードした値を取得します。
  Macならばターミナル上で下記を実行します。
 

echo -n {client_id}:{Client_Secret} | base64

  出力された値を「ZjM4ZjAw...WY0MzE=」とした場合、以下のようにリクエストを実行します。

curl -X "POST" -H "Authorization: Basic ZjM4ZjAw...WY0MzE=" \
<br />-d grant_type=client_credentials https://accounts.spotify.com/api/token

  以下のような結果が返ってくるので、アクセストークンを控えておきます。
  {
"access_token": "NgCXRKc...MzYjw",
"token_type": "Bearer",
"expires_in": 3600,
"scope": ""
}

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる