Spotify API 范围未被识别 - 无法访问用户信息
Spotify API scopes not being recognized - not able to access user info
我目前正在实施一项功能,您可以保存显示在我的 iOS 应用程序(用 Swift 编写)上的歌曲,并且此保存按钮允许将歌曲附加到用户的 Spotify 库。根据 Spotify 开发人员指南,此功能所需的唯一范围是 user-library-modify
向用户授权应用程序时。要打开的url是这样的:
一切正常 - 打开 url 供用户批准我的应用程序可以进行的更改,并且包含所需代码的回调 url 在 url被打开。
执行所需功能的下一步是获取准确的令牌以便使用 api,这是通过调用 url:
完成的
有了这个 url,一个 json 文件返回了新的令牌和信息,但是当查看令牌具有的允许范围时,它是空的:
["scope": , "token_type": Bearer, "access_token": the_token_string, "expires_in": 3600]
此外,当我仍然尝试执行请求时 returns:
["error": {
message = "Insufficient client scope";
status = 403;
}]
在这个漫长的过程中,我做错了什么?如果您想知道,这里有一些我尝试过但没有成功的事情:
1) 重新列出显式令牌请求中的范围
2) 将 utf-8 编码添加到重定向 uri(不确定这是否会改变任何内容)
3)添加许多其他作用域(虽然这显然不是针对问题的)
如果有人知道我做错了什么或者对我应该尝试什么有任何建议,我很感激任何有用的回复!
我发现了我的错误。我在 url 中输入的 grant_type 设置为 client_credentials
。然而,这种访问网络的方法 API 只允许使用公开可用的数据,而不是用户信息。因此,这种授权方式不接受参数scope
,强制spotify账号服务忽略这个附加参数。其他选项确实允许访问用户数据,它们是:
authorization_code
和 refresh_token
现在必须这样做的方法是:
1) 定期授权用户(提供范围)检索初始授权码
2) 然后,使用此代码发出令牌请求,但指定 grant_type
设置为 authorization_code
3) 然后您收到了有效期为一小时的 access_token
和 refresh_token
4) 必要时使用 access_token,当此令牌过期时,发出另一个令牌请求,但这次将 grant_type
设置为 refresh_token
并设置 code
参数到之前获得的refresh_token
5) 您现在有下一个 access_token 和 refresh_token
6) 重复步骤 4-5 直到无穷大
我目前正在实施一项功能,您可以保存显示在我的 iOS 应用程序(用 Swift 编写)上的歌曲,并且此保存按钮允许将歌曲附加到用户的 Spotify 库。根据 Spotify 开发人员指南,此功能所需的唯一范围是 user-library-modify
向用户授权应用程序时。要打开的url是这样的:
一切正常 - 打开 url 供用户批准我的应用程序可以进行的更改,并且包含所需代码的回调 url 在 url被打开。
执行所需功能的下一步是获取准确的令牌以便使用 api,这是通过调用 url:
完成的有了这个 url,一个 json 文件返回了新的令牌和信息,但是当查看令牌具有的允许范围时,它是空的:
["scope": , "token_type": Bearer, "access_token": the_token_string, "expires_in": 3600]
此外,当我仍然尝试执行请求时 returns:
["error": {
message = "Insufficient client scope";
status = 403;
}]
在这个漫长的过程中,我做错了什么?如果您想知道,这里有一些我尝试过但没有成功的事情:
1) 重新列出显式令牌请求中的范围
2) 将 utf-8 编码添加到重定向 uri(不确定这是否会改变任何内容)
3)添加许多其他作用域(虽然这显然不是针对问题的)
如果有人知道我做错了什么或者对我应该尝试什么有任何建议,我很感激任何有用的回复!
我发现了我的错误。我在 url 中输入的 grant_type 设置为 client_credentials
。然而,这种访问网络的方法 API 只允许使用公开可用的数据,而不是用户信息。因此,这种授权方式不接受参数scope
,强制spotify账号服务忽略这个附加参数。其他选项确实允许访问用户数据,它们是:
authorization_code
和 refresh_token
现在必须这样做的方法是:
1) 定期授权用户(提供范围)检索初始授权码
2) 然后,使用此代码发出令牌请求,但指定 grant_type
设置为 authorization_code
3) 然后您收到了有效期为一小时的 access_token
和 refresh_token
4) 必要时使用 access_token,当此令牌过期时,发出另一个令牌请求,但这次将 grant_type
设置为 refresh_token
并设置 code
参数到之前获得的refresh_token
5) 您现在有下一个 access_token 和 refresh_token
6) 重复步骤 4-5 直到无穷大