Spotify:使用授权码工作流程的永久授权

Spotify: Permanent auth with authorization code workflow

我正在构建一个原型来证明从 Spotify 派生用户播放列表等。 由于这是用户信息,我必须使用 Spotify 的授权码工作流程(参考 https://developer.spotify.com/web-api/authorization-guide/#authorization_code_flow

在此工作流程中,应用程序请求用户授予范围权限,以便提取相关信息。 在接下来的一系列调用中:

  1. 调用/authorize 回调请求中发送的 redirect_uri 并发送代码 例如 redirect_uri=../abc 收到 ../abc/callback?code=xyz

    如文档中所示。

  2. xyz 然后被发送到 /api/token 以获得 access_token 和 refresh_token

有什么方法可以避免在用户授予授权后重复调用 /authorize 吗?

实际上,我能否不将代码(来自 /authorize)视为 oauth 令牌并保留它(比如在数据库中)以在每次需要时获得一个新的 access_token? (作为直接比较检查 facebook 的 oauth 令牌,可以保存并重复使用以进行每次身份验证)

我如何记住用户已经授予我访问 his/her Spotify 个人资料和数据的权限?

请指出我是否遗漏了文档中明显的内容。如果在其他地方已经指定,请指出我的正确之处。

非常感谢!

对于此用例,您可以使用 Authorization Code flow。你应该坚持的是refresh_token它returns,它可以用来获取访问令牌。您还可以选择保留访问令牌,您可以在一小时内使用它,这样您就不需要每次都获取新的访问令牌。

Authorization Guide 中有一个 FAQ 讨论了一个类似的场景,用户想要管理她的播放列表而不必每次都经过登录过程:

You basically need an access token and a refresh token issued for your user account. For obtaining a pair of access token / refresh token you need to follow the Authorization Code Flow (if you need a certain scope to be approved) or Client Credentials (if you just need to sign your request, like when fetching a certain playlist). Once you obtain them, you can use your access token and refresh it when it expires without having to show any login form.