我正在使用此代码从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}/播放列表时,它需要标头字段中的令牌。
谢谢!
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
在curl执行之前也使用这一行,然后它会给出正确的json
您需要解码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 { "