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

Sme*_*eep 3 python uri callback spotify

我想编写一个简单的供个人使用的桌面应用程序,它使用 Spotify Web API 来构建播放列表。

然而,据我所知,如果不提供回调 URI,就无法使用 API,而我没有回调 URI,因为我没有任何类型的域或服务器(除了我的个人计算机) 。

有没有一种方法可以在没有 URI 的情况下使用 API?

如果没有,设置回调 URI 的最佳方法是什么?我没有太多使用 Web 应用程序或客户端/服务器内容的经验,而且我过去使用的 API 不需要任何类型的回调。

Mic*_*lin 6

首先是一些背景知识,这个答案比我预期的要长一些。

您需要一个访问令牌。可通过三种方式检索访问令牌;身份验证代码流、客户端凭据流和隐式授予流。这些都是 oAuth 2.0 规范的一部分,每个都有其自己的用途。

由于您要修改用户的帐户,因此需要该用户的许可。现在,如果您没有执行任何需要用户权限的操作,则可以使用客户端凭据流程。这可能是最容易学习的流程,因为它只需要从您的服务器向 Spotify 服务器发出请求,并且响应包含访问令牌。不需要回调/重定向 URI。

我确信您已经阅读过,身份验证代码流和隐式授予流都需要回调 URI。这是因为包含用户的流,回调 URI 是 Spotify 在用户在 Spotify 网站上输入密码后重定向用户的位置。

身份验证代码流程和隐式授权流程各有优点和缺点。通过身份验证代码流检索的访问令牌可以刷新,但两者都会返回有效期为一小时的令牌。这意味着使用隐式授权流程进行身份验证的用户必须在一小时后重新进行身份验证。但是,身份验证代码流程确实需要一些后端工作,因为它需要发出请求,以将 Spotify 服务器提供的代码交换为访问令牌。隐式授权流程更加直接 - 您获得访问令牌即可开始。

回调 URI 可以是本地主机地址,因此如果您的桌面应用程序将在本地启动 Web 服务器,您可以在运行应用程序的同一台计算机上处​​理回调。(最好不要在端口 80 上运行 Web 服务器,因为该端口可能会被其他东西使用。)

Github 上提供了每个身份验证流程的框架代码,请参阅web-api-auth-examples请阅读我们的授权指南,了解有关流程的更多信息。如果您选择在用户的计算机上运行 Web 服务器,我建议您使用隐式授予流程,因为它不包含任何服务器到服务器的请求,因此您不必在client_secret代码中公开您的权限。(与授权代码流程相反。)

另外,由于您正在使用 Python 进行编码,因此我建议您查看一下Spotipy,它是 Web API 的包装器,其中包含方便的方法,可以节省您一些时间。如果您确实继续使用隐式授予流程,您应该看看Spotify-web-api-js,它具有类似的目的。请注意,使用 Web API 根本不需要这些包装器,但它们会让您的生活更轻松。