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

无法识别Spotify API作用域-无法访问用户信息

阎兴为
2023-03-14

我目前正在实施一项功能,您可以保存我的iOS应用程序上显示的歌曲(使用Swift编写),此保存按钮允许将歌曲附加到用户的Spotify库中。根据Spotify开发者指南,此功能所需的唯一范围是在向用户授权应用程序时对用户库进行修改。要打开的url如下所示:

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

这一切都是完美的-url是为用户打开的,以批准我的应用程序可以进行的更改,并且具有所需代码的回调url是在url中打开的。

执行所需函数的下一步是获得一个精确的令牌,以便使用api,这是通过调用url完成的:

https://accounts.spotify.com/api/token?grant_type=client_credentials

使用此url,将返回一个json文件,其中包含新的令牌和信息,但当查看令牌的允许范围时,它是空的:

[“范围”:“令牌类型”:承载,“访问令牌”:令牌字符串,“到期时间”:3600]

此外,当我仍然尝试执行请求时,它会返回:

[“错误”:{message=“客户端范围不足”;status=403;}]

在这个漫长的过程中,我做错了什么?如果你想知道,以下是我尝试过但没有成功的几件事:

1) 在显式令牌请求中重新列出作用域

2) 向重定向uri添加utf-8编码(不确定这是否会改变任何内容)

3) 添加许多其他作用域(尽管这显然不是针对问题的)

如果有人知道我做错了什么,或者对我应该尝试什么有任何建议,我很感激任何有益的回应!


共有1个答案

孟新知
2023-03-14

我发现了我的错误。我在url中输入的grant_type设置为client_credentials。然而,这种访问网络应用编程接口的方法只允许使用公开的数据,而不允许使用用户信息。因此,这种授权方法不接受参数range,迫使Spotify帐户服务输入这个附加参数。其他选项DO允许访问用户数据,它们是:

authorization_code,和refresh_token

现在必须这样做的方式是:

1)定期授权用户(提供范围)检索初始授权代码

2)然后,使用此代码,发出令牌请求,但指定要设置为authorization_codegrant_type

3) 然后,您收到了一个有效的一小时访问令牌和一个刷新令牌

4)必要时使用access_token,当此令牌过期时,发出另一个令牌请求,但这次将grant_type设置为refresh_token,并将code参数设置为先前获得的refresh_token

5) 现在您有了下一个访问\u令牌和刷新\u令牌

6) 重复步骤4-5,直到无穷大

 类似资料:
  • 问题内容: 我试图在我的指令中使用隔离范围放置一些默认值。基本上,绑定指令后,我需要使用scope对象进行一些DOM操作。下面是我的代码: 控制器: 服务: 指示: 自定义指令元素: 现在,问题是,当尝试在指令内部的默认方法中访问隔离范围时,我在获取数据并将其绑定到DOM的同时获得了未定义的值。如何访问广播侦听器中的隔离作用域并修改指令模板HTML?还有另一个处理这个的麻烦吗? 问题答案: 问题是

  • 我正在Android Studio(beta)0.8.9中构建一个应用程序,尽管我似乎无法运行模拟器。我已经通过这些选项制作了Nexus 4和5模拟器,但我似乎无法启动它们。它会在Run App选项卡中显示这一点。 所以要么它没有启动,要么我只是一个不耐烦的哭泣。 我还下载了GenyMoon,并通过它启动了一个模拟器,但现在Android Studio不再识别这个模拟器了。我试着运行我的应用程序,

  • 我有以下序列

  • 我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢

  • 在@inheritage类型Joined中 我有班级成员、员工和学生 因此,当我保存Employee或Student记录,然后检索Person记录时,它给我的鉴别器列值为NULL,但在重新启动服务器后,它给我相应的值 如果我手动设置鉴别器列值的值,然后保存和检索,那么它会给我这个值(我需要手动设置鉴别器列值吗?)那么使用鉴别器列有什么好处呢 为什么我不应该使用一个具有列类型的employee和st

  • 问题内容: 我想在docker上运行jenkins并更改用户访问权限,以便可以读取SSH密钥并访问git。这是dockerfile的示例 生成时输出成功,访问已更改! 但是,当我进入访问设置为默认时,chmod无法正常工作 知道为什么这种行为吗? 问题答案: 发生这种情况是因为在基本映像中进行了定义。您可以通过3种方式中的任何一种来解决此问题 您可以在构建之前在主机上修复权限,它应该可以工作。 您