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

Posted

技术标签:

【中文标题】来自 C# 的 Spotify Web API 没有范围【英文标题】:Spotify web API from C# without scope 【发布时间】:2017-11-19 00:51:32 【问题描述】:

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

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

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

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

感谢您的宝贵时间!

【问题讨论】:

【参考方案1】:

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

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

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

    在https://developer.spotify.com/my-applications/#!/applications 为您自己创建一个应用程序(您可以在此处获取以后的 API 调用所需的客户端 ID客户端密码) 访问 API 时,首先需要向https://accounts.spotify.com/api/token 发送一个 POST 请求,带有一个主体参数 grant_type=client_credentials 和一个头部参数 Authorization: Basic Base64(Client_Id:Client_Secret) 这将返回一个 access_token,您将使用它进行进一步的 API 调用(有效期为一小时) 现在您可以查询 API(例如,使用 https://api.spotify.com/v1/search?query=[your_query]&type=track 搜索曲目),提供 access_token 作为标头参数授权:承载 [access_token] 您可以继续对多个 API 调用使用相同的 access_token,只要它仍然有效

【讨论】:

这正是我想要的,谢谢!我会试试看它是否有效

以上是关于来自 C# 的 Spotify Web API 没有范围的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spotify Web API 播放曲目

无法使用 kaaes Spotify web api 获取播放列表的曲目

是否可以使用 Spotify Web API 编写没有回调 URI 的桌面应用程序?

C# Windows Forms Spotify API 用户授权

spotify web api 授权码授权 thelinmichael/spotify-web-api-java android

是否可以保存来自 Spotify 搜索 API 的结果?