当前位置: 首页 > 知识库问答 >
问题:

Spotify API令牌范围问题

糜野
2023-03-14

我已经做了一段时间了,我想看看是否有人知道我可能做错了什么。我想做的是使用提供的Spotify Web API将歌曲添加到播放列表中。根据这方面的文件https://developer.spotify.com/documentation/web-api/reference/playlists/add-tracks-to-playlist/我需要确定用户的范围。

“将曲目添加到当前用户的私人播放列表(包括协作播放列表)需要播放列表-修改-私人范围”我已经将播放列表创建为协作,我正在使用我的个人帐户的登录凭据来到达我创建的这个播放列表。所有这一切都在同一个登录下。

我发现我的范围没有被添加到我的令牌上,当我尝试添加歌曲时,令牌会导致403错误。这是那个调用的样子

https://accounts.spotify.com/authorize/?client_id=mynumber

以下是使用授权获取正确令牌的文档。https://accounts.spotify.com/authorize/?client_id=894400c20b884591a05a8f2432cca4f0

如果我在这里讨论开发支持,会得到更多信息https://developer.spotify.com/documentation/web-api/reference/playlists/add-tracks-to-playlist/然后单击绿色的“尝试”按钮,然后请求一个新的令牌。

底线是我的请求如何不接受我的范围请求。有什么想法吗?

谢谢

共有1个答案

夔高寒
2023-03-14

要获取具有特定作用域的令牌,您需要转到授权终结点并获取codecode是您想要获得的,以便能够将超文本传输协议发布到终结点https://accounts.spotify.com/api/token并获取具有所需作用域的令牌。您可以通过在浏览器中粘贴这样的网址来简单地获取code...

https://accounts.spotify.com/authorize?client_id=<client_id>&response_type=code&scope=streaming%20user-read-email%20user-read-private&redirect_uri=<redirect_uri>

如果有多个作用域,则仅在作用域之间添加

然后你会被发送到spotify的网站,他们会验证你是否想要这样做。验证后,浏览器会将您重定向到您在上面的url中设置的redirect_uri。在发送到的url末尾,您应该能够看到参数名称code,以及分配给它的代码值。然后获取该代码并将其放入http post body参数中,https://accounts.spotify.com/api/tokenendpoint。确保您准确地遵循post方法中的查询参数要求。

使用请求库的python帖子示例:

authorization = requests.post(
    "https://accounts.spotify.com/api/token",
    auth=(client_id, client_secret),
    data={
        "grant_type": "authorization_code",
        "code": <code>,
        "redirect_uri": <redirect_uri>
    },        
)


authorization_JSON = authorization.json()
return authorization_JSON["access_token"]

最后,您应该得到一个json,它显示了您设置的作用域,并在稍后刷新令牌以发出更多请求。

我知道这个答案已经很晚了,但我也遇到了同样的问题,这就是我遇到这个问题的原因。我希望这对以后看到这一点的人有所帮助。

来源:https://developer.spotify.com/documentation/general/guides/authorization-guide/#client-credentials-flow

 类似资料:
  • 授权端点和令牌端点允许客户端使用“scope”请求参数指定访问请求的范围。反过来,授权服务器使用“scope”响应参数通知客户端颁发的访问令牌的范围。 范围参数的值表示为以空格分隔,大小写敏感的字符串。 由授权服务器定义该字符串。如果该值包含多个空格分隔的字符串,他们的顺序并不重要且每个字符串为请求的范围添加一个额外的访问区域。 scope = scope-token *( SP scope-to

  • 从AAD接收访问令牌,使用下面的urlhttps://login.microsoftonline.com/gdfdddddd-87dd-497c-b894-xxxxxx/oauth2/v2.0/token grant_type :client_credentials 客户端id:xxxxx-1ff 5-4615-8d 71-yyyyy client_secret:[7aCw]fdsfsfsfds.

  • 我正在阅读以下关于授权的文章: https://auth0.com/docs/quickstart/backend/aspnet-core-webapi/02-authorization 这让我有点困惑。 Auth0使用范围声明来提及endpoint操作的授权。 OAuth 2.0范围参数也用于相同目的,例如Slack在以下链接中提到其范围: https://api.slack.com/docs/

  • 我正在尝试执行邮递员访问令牌请求以访问以下api: 然而,返回的结果总是相同的: 职位:https://login.microsoftonline.com/{租户id}/oauth2/v2.0/令牌 身体: client_id:我的客户端id 范围:https://graph.microsoft.com/.default client_secret:我的客户端机密 grant_type:clien

  • 我正在更新我的web应用程序以使用新的msal库@Azure/msal-Angular。我以前使用过旧的adal库。前端web应用程序是用angular 5编写的,它调用后端应用程序,后端应用程序是一个asp net核心web API。两者在Azure AD(AppsV1)中都使用了相同的app注册。前端应用程序向Microsoft Graph api、Dynamics CRM和后端web api

  • 问题内容: 我有相同的错误此。就我而言,这是在应用尝试通过Google Cloud Client API上传文件时发生的。 我如何加载令牌是读取服务帐户json文件,并将其附加到PHP中。在过去的一个月中,它确实可以正常工作,因此我猜测Google改变了授权方式。 有没有人面对并解决过这个问题? 问题答案: 我大约在同一时间偶然发现了相同的问题,因此我期望使用Google的通用错误,但这是我的计算