php - 我正在使用 php 通过 PHP 和客户端凭据流连接到 spotify 的 API
问题描述
我不熟悉使用某种 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);
?>
我得到的错误是:
""status": 400, "message": "仅支持有效承载认证""
当我尝试打印出我的 json 资源变量的结果时,$json[access_token]
它会打印 0。
这是完整的错误消息。
HTTP/2 400
www-authenticate: Bearer realm="spotify", error="invalid_request",
error_description="Only valid bearer authentication support"
access-control-allow-origin: *
access-control-allow-headers: Accept, App -平台、授权、内容
-类型、来源、重试后、Spotify-App-Version
访问控制-允许-方法:GET、POST、OPTIONS、PUT、DELETE、PATCH
访问-控制-允许-凭据:真正的
访问-控制最大年龄:604800
内容类型:应用程序/json
内容长度:99
日期:2019 年 10 月 26 日星期六 15:55:39 GMT 来自
:1.1 google
alt-svc:清除
解决方案
您是否尝试过其他请求并遇到类似的身份验证错误?为了进行测试,我接受了您的查询并对其进行了一些简化以在我的系统上对其进行测试,它返回了一位艺术家,因此它看起来可以正常工作。
curl -i "https://api.spotify.com/v1/search?q=Maycon+%26+Vinicius+&limit=1&type=artist" -H "Accept: application/json" -H "Authorization: Bearer $AccessToken" -H "Content-Type: application/json"
推荐阅读
- javascript - 创建客户端Javascript库
- c++ - C++ Qt QPixmap 加载总是返回 false
- angular - 如何更改Angular Material中数据表标题中排序箭头的颜色?
- node.js - 尝试从 git hub node.js 版本 v6.10.0 安装 MERN-Social-Network
- java - 从现有的 jhipster 生成的应用程序重构为 Spring Boot 应用程序
- javafx - Netbeans 9 0 Java FX 10
- scala - Spark:列表或列表缓冲区
- ios - 重复本地通知会删除先前待处理的本地通知
- c# - 如何为要在 ASP.net 核心中下载的文件创建可下载文件链接
- swift - Post A Json object as parameter value in Swift 4 ios using Alamofire