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

PHP中的Spotify API验证-重定向URI无效

汪文光
2023-03-14

我试图连接到Spotify API。

我得到授权代码:

<?php
$redirect_uri = 'http%3A%2F%2Flocalhost%3A8000';
?>
<a href="https://accounts.spotify.com/authorize?client_id=<?php echo $client_id;?>&response_type=code&redirect_uri=<?php echo $redirect_uri; ?>&scope=user-read-private%20user-read-email&state=34fFs29kd09">Get code</a><br/><br/>

到目前为止还不错,我得到了代码。然后我试着用:

$redirect_uri = 'http%3A%2F%2Flocalhost%3A8000';
$url = 'https://accounts.spotify.com/api/token';
$fields = [
  'grant_type' => 'authorization_code',
  'code' => $code,
  'redirect_uri' => $redirect_uri,
  'client_id' => $client_id,
  'secret' =>   $secret
];
$fields_string = http_build_query($fields);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
$result = curl_exec($ch);

我有我能想象到的所有变化http://localhost:8000Spotify仪表板中的白名单:

但是我得到了这个错误:

result: {"error":"invalid_grant","error_description":"Invalid redirect URI"}

编辑:奇怪的是,我可以成功地链接到隐式授予客户端方法,使用重定向URIhttp://localhost:8000——所以我知道这是正确的白名单。我在上面发布的代码中使用了这个URI,并得到了同样的错误。我还使用了我能想到的所有其他组合,无论是使用://,://, 尾随斜杠,尾随:等等。每次都有同样的错误!

有什么想法吗?

编辑2:如果我使用$redirect_uri='http://localhost:8000';我得到一个不同的错误:

result: {"error":"invalid_request","error_description":""}

共有1个答案

郦昆
2023-03-14

现在您已经停止对重定向uri进行编码,它正在抱怨无效的参数。

根据文档,客户端id和机密不应与其他参数一起发送,它们需要通过授权标头添加到标头中:

https://developer.spotify.com/documentation/general/guides/authorization-guide/#2-have-your-application-request-refresh-and-access-tokens-spotify-returns-access-and-refresh-tokens

HEADER PARAMETER 
Authorization 
Base 64 encoded string that contains the client ID and client secret key. 
The field must have the format:
Authorization: Basic <base64 encoded client_id:client_secret>
 类似资料:
  • 我在本地机器上访问Spotify API没有任何问题。我将我的本地地址作为重定向uri参数提供给spotify auth请求(http://localhost:8080)我还将Spotify开发者控制台中的这个URI添加到了白名单中。 但当我将我的应用部署到AWS时,我有一个如下url:http://myapp-env.eu-west-2.elasticbeanstalk.com/ 所以我也在Sp

  • 我正在尝试让Spotify API与AngularJS一起工作。我在授权阶段收到一个无效的重定向URI错误(https://developer.spotify.com/web-api/authorization-guide/). 我在白名单中添加了redirect_uri,当我有一个uri,比如 但当我有一个带有散列的URI时,它就不起作用了 我想使用后者URI的原因是因为前者我得到了一个URI,

  • 我对网络开发相当陌生,我一直试图使用Spotify应用编程接口用Python制作一个网络应用程序。 我试图尝试获得对用户帐户的授权,并尝试将其输入我的浏览器(用我的客户端ID替换CLIENTID):https://accounts.spotify.com/authorize?client_id=CLIENTID 然而,我得到了错误: 我有白名单http://example.com/callback

  • 我尝试使用spotify Web API通过我的应用程序对用户进行身份验证,但收到以下错误: 网址: 我看不出问题出在哪里。。。你能帮忙吗?

  • 我试图使用网络应用编程接口从Spotify获得令牌: 我的原始请求: 在这里,[authkey]被所需的字符串替换(这被破坏了,给了我一个不同的错误,但现在我修复了它),[code]被Spotify早一步返回的代码替换。 我得到以下回应: 我一定做错了什么,但我想不通。有人能帮我吗?

  • 在我登录Spotify并将其与我的应用程序连接后,出现了一个错误: 无效的_客户端:无效的重定向URI。 我已经向Spotify注册了我的重定向URI,并确保它与我的代码中使用的相同。我已经根据重定向URI和特定标识符创建了一个带有该方案的URL类型,但仍然会出现错误。有什么想法吗?