当前位置: 首页 > 知识库问答 >
问题:

从响应url提取令牌-Spotify API

左丘昕
2023-03-14

我正在使用此代码从Spotify的Web API获取令牌:

<?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);
?>

这导致在浏览器中显示:

{"access_token":"{token}","token_type":"Bearer","expires_in":3600}

太好了!但是如何从响应中提取“{令牌}”并将其用作对API的请求中的参数?例如,在请求https://api.spotify.com/v1/users/{user_id}/播放列表时,它需要标头字段中的令牌。

谢谢!

共有2个答案

米景辉
2023-03-14
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

在curl执行之前也使用这一行,然后它会给出正确的json

公良修竹
2023-03-14

您需要解码JSON:

$response = json_decode($response, true);

然后你会得到一个数组。

$token = $response['access_token'];

此外,您还缺少以这种方式获取响应的必要选项:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

如果没有定义,您将得到一个布尔值而不是响应。

 类似资料:
  • 我需要在使用Jmeter登录后获取持有者令牌,并希望在其他请求中使用该令牌。我尝试通过传递用户名和密码以及其他查询字符串参数,如屏幕截图所示,但它不起作用。它给出了以下回应 [线程名称:线程组 1-1 示例 开始:2021-05-11 16:05:11 IST 加载时间:2190 连接时间:1550 延迟:2190 以字节为单位的大小:160 发送的字节数:975 标头大小(以字节为单位):155

  • 问题内容: 尝试在SafariViewController中使用Facebook OAuth。首先,我使用SafariViewController打开authURL,如果用户在Safari上登录Facebook,它将重定向它们并返回带有该特定服务令牌的OAuth URL,例如Instagram 响应:https : //www.facebook.com/connect/login_success.

  • 如果访问令牌请求是有效的且被授权,授权服务器如5.1节所述颁发访问令牌以及可选的刷新令牌。刷新令牌不应该包含在内。 如果请求因客户端身份验证失败或无效,授权服务器如5.2节所述的返回错误响应。 一个样例成功响应: HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Cache-Control: no-store Pragma:

  • 如果访问令牌请求是有效的且被授权,授权服务器如5.1节所述颁发访问令牌以及可选的刷新令牌。如果请求客户端身份验证失败或无效,授权服务器如5.2节所述的返回错误响应。 一个样例成功响应: HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Cache-Control: no-store Pragma: no-cache { "

  • 如果资源所有者许可访问请求,授权服务器颁发访问令牌,通过使用按附录B的“application/x-www-form-urlencoded”格式向重定向URI的片段部分添加下列参数传递访问令牌至客户端: access_token 必需的。授权服务器颁发的访问令牌。 token_type 必需的。如7.1节所述的颁发的令牌的类型。值是大小写不敏感的。 expires_in 推荐的。以秒为单位的访问令

  • 如果访问令牌请求是有效的且被授权,授权服务器如5.1节所述颁发访问令牌以及可选的刷新令牌。如果请求客户端身份验证失败或无效,授权服务器如5.2节所述的返回错误响应。 一个样例成功响应: HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Cache-Control: no-store Pragma: no-cache { "