使用 Laravel 和 Guzzle 包将网络 API 发送到 Spotify 时出现问题
Problem sending web API to Spotify using Laravel and Guzzle package
我正在尝试使用网络 API 与 Spotify 通信。
情况就是这样。为了从 Spotify 检索任何信息,首先我需要获得 Spotify 的授权。为此,我需要向 https://accounts.spotify.com/api/token
发送一个包含授权凭证(包含 client_id 和 client_secret)的 post 请求,然后作为响应,我应该会收到一个访问令牌稍后我将使用它来检索任何其他信息。
这是有关其工作原理的快速 Spotify 文档:
所以这里的问题是我正在做我应该做的一切,但我没有得到响应的令牌。
这是我在 laravel 中使用 Guzzle 包的代码:
而不是访问令牌作为响应,这个 HTML 输出是我在 return 中从 Spotify 收到的(没有任何问题的进一步信息和任何错误代码):
您可能误解了这一行?
Authorization: Basic <base64 encoded client_id:client_secret>
看起来你是这样做的:
base64_encode($client_id) . ":" . base64_encode($client_secret)
但也许他们想要这个:
base64_encode($client_id . ":" . $client_secret);
也就是说,假设您完全使用 base 64 对它们进行编码,因为这实际上并未显示在您的代码中。
此外,文档指出它需要 application/x-www-form-urlencoded
编码。
# 发送表单 URL 编码请求
https://laravel.com/docs/8.x/http-client#sending-form-url-encoded-requests
要满足此要求,您可能需要在请求中添加 asForm()
。
$response = Http::withHeaders(...)->asForm()->post(...);
我正在尝试使用网络 API 与 Spotify 通信。
情况就是这样。为了从 Spotify 检索任何信息,首先我需要获得 Spotify 的授权。为此,我需要向 https://accounts.spotify.com/api/token
发送一个包含授权凭证(包含 client_id 和 client_secret)的 post 请求,然后作为响应,我应该会收到一个访问令牌稍后我将使用它来检索任何其他信息。
这是有关其工作原理的快速 Spotify 文档:
所以这里的问题是我正在做我应该做的一切,但我没有得到响应的令牌。
这是我在 laravel 中使用 Guzzle 包的代码:
而不是访问令牌作为响应,这个 HTML 输出是我在 return 中从 Spotify 收到的(没有任何问题的进一步信息和任何错误代码):
您可能误解了这一行?
Authorization: Basic <base64 encoded client_id:client_secret>
看起来你是这样做的:
base64_encode($client_id) . ":" . base64_encode($client_secret)
但也许他们想要这个:
base64_encode($client_id . ":" . $client_secret);
也就是说,假设您完全使用 base 64 对它们进行编码,因为这实际上并未显示在您的代码中。
此外,文档指出它需要 application/x-www-form-urlencoded
编码。
# 发送表单 URL 编码请求
https://laravel.com/docs/8.x/http-client#sending-form-url-encoded-requests
要满足此要求,您可能需要在请求中添加 asForm()
。
$response = Http::withHeaders(...)->asForm()->post(...);