我正在使用 php 通过 PHP 和客户端凭据流连接到 spotify 的 API

Posted

技术标签:

【中文标题】我正在使用 php 通过 PHP 和客户端凭据流连接到 spotify 的 API【英文标题】:I am using php to connect to spotify's API with PHP and with the client credentials flow 【发布时间】:2020-02-22 15:13:48 【问题描述】:

我不熟悉使用某种 REST 协议,并且无法从 cURL 请求中取回我的访问令牌。

这是使用 WAMP。我已经启用了 cURL 扩展,现在可以使用了。我也已经制作了一个 spotify 应用程序并拥有我的客户端 ID 和秘密 ID。

<?php

/* Spotify Application Client ID and Secret Key */
$client_id     = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
$client_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

/* Get Spotify Authorization Token */
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,            'https://accounts.spotify.com/api/token' );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST,           1 );
curl_setopt($ch, CURLOPT_POSTFIELDS,     'grant_type=client_credentials' );
curl_setopt($ch, CURLOPT_HTTPHEADER,     array('Authorization: Basic '.base64_encode($client_id.':'.$client_secret)));

$result=curl_exec($ch);
$json = json_decode($result, true);

 echo "Results of json:  ". + $json['access_token'];

/* Get Spotify Artist Photo */
echo "<pre>";
exec('curl -i "https://api.spotify.com/v1/search?<br>q=Maycon+%26+Vinicius+&limit=1&type=artist" -H "Accept: application/json" -H "Authorization: Bearer '.$json['access_token'].'" -H "Content-Type: application/json" 2>&1', $pp);
echo implode("\r\n", $pp);
?>

我得到的错误是:

""状态": 400, "message": "仅支持有效承载认证""

当我尝试打印出我的 json 资源变量 $json[access_token] 的结果时,它会打印 0。

这是完整的错误信息。

HTTP/2 400 www-authenticate: Bearer realm="spotify", error="invalid_request", error_description="仅有效承载 支持身份验证” 访问控制允许来源:* 访问控制允许标头:接受、应用平台、授权、 内容-类型、来源、重试后、Spotify-应用程序版本 访问控制允许方法:GET、POST、OPTIONS、PUT、DELETE, PATCH访问控制允许凭据:true 访问控制最大年龄:604800 内容类型:应用程序/json 内容长度:99 日期:2019 年 10 月 26 日星期六 15:55:39 GMT 来自: 1.1 谷歌 alt-svc: 清除

【问题讨论】:

欢迎来到 Stack Overflow,Scott。当您提出问题时,请务必格式化您的问题以使其更具可读性(清楚地识别什么是您自己的话,什么是代码以及什么是输出/错误消息)。我已经编辑了您的(待批准),以向您展示如何使用可用的格式化功能来帮助获得答案。 你能解决这个问题吗?我也有同样的问题! 【参考方案1】:

您是否尝试过其他请求并遇到类似的身份验证错误?为了测试,我接受了您的查询并对其进行了一些简化,以便在我的系统上对其进行测试,它返回了一位艺术家,所以它看起来可以正常工作。

curl -i "https://api.spotify.com/v1/search?q=Maycon+%26+Vinicius+&amp;limit=1&amp;type=artist" -H "Accept: application/json" -H "Authorization: Bearer $AccessToken" -H "Content-Type: application/json"

【讨论】:

以上是关于我正在使用 php 通过 PHP 和客户端凭据流连接到 spotify 的 API的主要内容,如果未能解决你的问题,请参考以下文章

使用 OAuth2 客户端凭据流保护用 PHP 编写的 REST API

使用服务帐户通过 PHP API 访问 BigQuery 时出现“无效凭据”

使用 Windows 凭据通过 PHP 在网页中自动登录

通过存储用户凭据在 php 中集成 Paypal

PHP PayPal API 快速结帐

即使使用 AngularJS 和 PHP 的凭据不正确,登录仍然会指示