来自 C# 的 Spotify Web API,没有范围



我正在尝试访问Spotify Web API(遵循此文档:https://developer.spotify.com/web-api/authorization-guide/#authorization_code_flow)。 我只需要访问公共数据,例如专辑名称和封面。要访问它,我不需要任何用户范围,所以我认为最好的方法是"授权代码",没有指定范围。

我找到的唯一示例使用客户端凭据和用户范围,因此用户必须授予访问权限。但在这种情况下,它不应该是。

我已经设法从我的get请求中得到了响应,但它是一个html页面,所以我需要使用http服务器并监听httpServer.OnAuth。 这会导致 Web 浏览器打开,并且用户接受访问,但我认为这对于公共访问来说不一定是必需的。

所以,我的问题是...有没有办法获得授权来查询 spotify Web API 以获取公共数据,而无需用户执行任何操作?也许有网络请求和响应?或者甚至可能使用完全不同的方法来访问这些 spotify 公共数据......我很困惑,我认为这应该是可能的!

谢谢你的时间!

我最近自己也做了同样的事情,和你一样,我也对如何在没有用户输入他/她的凭据的情况下查询 Spotify API 感到有些困惑。让我感到困惑的是不同授权流的命名:授权代码、客户端凭据和隐式授权。一旦您意识到客户端凭据中的客户端不是用户中的客户端,而是您正在开发的应用程序中的客户端,它就会变得更加清晰。

这个过程在这里得到了很好的描述:https://developer.spotify.com/web-api/authorization-guide/#client-credentials-flow

但简而言之,这些是您需要执行的步骤:

  1. 在 https://developer.spotify.com/my-applications/#!/applications 为自己创建一个应用程序(这是获取后续 API 调用所需的客户端ID客户端密钥的位置)
  2. 访问 API 时,首先需要向 https://accounts.spotify.com/api/token 发送一个 POST 请求,其中包含 body 参数grant_type=client_credentials和一个标头参数授权:基本 Base64(Client_Id:Client_Secret)这将返回一个access_token,您将使用该用于进一步的 API 调用(有效期为一小时)
  3. 现在你可以查询 API(例如,使用 https://api.spotify.com/v1/search?query=[your_query]&type=track 搜索轨迹),提供access_token作为标头参数授权:不记名 [access_token]
    您可以继续对多个 API 调用使用相同的access_token,只要它仍然有效

最新更新