Extract token from response url - Spotify API
我正在使用此代码从 Spotify 的 Web API 获取令牌:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php $url = 'https://accounts.spotify.com/api/token'; $method = 'POST'; $credentials ="{Client ID}:{Client Secret}"; $headers = array( "Accept: */*", "Content-Type: application/x-www-form-urlencoded", "User-Agent: runscope/0.1", "Authorization: Basic" . base64_encode($credentials)); $data = 'grant_type=client_credentials'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); ?> |
这会在浏览器中显示:
1 | {"access_token":"{token}","token_type":"Bearer","expires_in":3600} |
太棒了!但是如何从响应中提取"{token}"并将其用作对 API 的请求中的参数?例如,在对 https://api.spotify.com/v1/users/{user_id}/playlists 的请求中,它需要标头字段中的令牌。
谢谢!
您需要对 JSON 进行解码:
1 |
然后你会有一个包含值的数组。
1 | $token = $response['access_token']; |
另外,您缺少以这种方式获取响应的必要选项:
1 |
如果没有定义,你会得到一个布尔值而不是响应。
1 |
在你的 curl 执行之前也使用这条线,然后它会给你正确的 json