我想创建一个应用程序,将添加一些歌曲到Spotify播放列表。所以使用Spotipy (Python库)来解决这个问题可能是个好主意。
要将歌曲添加到播放列表,我需要知道它的URI。要知道它的URI,我应该使用称为搜索(https://spotipy.readthedocs.io/en/2.19.0/#spotipy.client.Spotify.search)的方法。它需要一些输入,其中之一是授权,它需要访问令牌(文档https://developer.spotify.com/documentation/web-api/reference/#category-search链接)。然后我使用Spotify的授权指南进行授权(AuthGuidehttps://developer.spotify.com/documentation/general/guides/authorization-guide/#authorization-code-flow链接),然后我堆叠。
第一步很简单:
self.query = {
'client_id': client_id,
'response_type': 'code',
'redirect_uri': 'andriime.github.com/pc/'
}
self.info_code = requests.get(url=SPOTIFY_URL, params=self.query)
self.authorization_code = self.info_code.text
但第二步真的很可怕。我在整个互联网上搜索它的解决方案,并没有任何一个正常的指南如何通过它。但这是我发现的最好的:
Spotify API{'error':'invalid_client'}授权代码流[400]
请,如果你知道如何处理它或有一个答案,我错过了就写在这里!
编辑
如果我打印self.info_code响应代码是200。client_id和client_secret是环境变量,我在上面定义了它们(我没有发布此代码)。我的步骤2代码如下所示:
self.authorization_code = self.info_code.text
code_payload = {
'grant_type': 'authorization_code',
'code': self.authorization_code,
'redirect_uri': redirect_uri,
}
auth_str = '{}:{}'.format(client_id, client_secret)
b64_auth_str = base64.urlsafe_b64encode(auth_str.encode()).decode()
print(b64_auth_str)
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic {}'.format(b64_auth_str)
}
post_request = requests.post(url=API_URL, data=code_payload, headers=headers)
print(post_request.text)
响应文本是{"error":"invalid_grant","error_description":"无效授权码"}。StackOverflow上有一个答案,但对我不起作用(如何修复从Spotify API请求reshresh_token时的“错误:invalid_grant无效授权码”?),因为我没有犯那里写的错误。
在Spotify社区论坛上也有一个答案,但那里没有答案。在另一个论坛上有一个问题,但它也没有得到解答
链接:
1.spotify.com/t5/Spotify-for-开发人员/无法获取-访问-令牌-使用-授权-代码流/m-p/5098258
2.https://developer.salesforce.com/forums/?id=906F00000009B2AIAU)
因此,如果您知道它应该如何工作,请再次询问您回答。非常感谢!
好吧,我知道怎么做了。这个视频真的帮助了我(https://www.youtube.com/watch?v=yAXoOolPvjU),然而它是关于javascript的,但是概念是相同的。
在第一步之后(在得到self.info_code响应之后),您应该检查一些事情:
2.参数(请求输入)中的“response_type”应等于“code”
print(f'{SPOTIFY_URL}?client_id={client_id}
SPOTIFY_URL等于"https://accounts.spotify.com/authorize"
然后您只需将链接复制并粘贴到浏览器中,然后单击一些“接受”按钮。在此之后,您将被重定向到您粘贴为“redirect_uri”的页面,然后您应该单击浏览器中的链接,您应该会在“redirect_uri”之后看到“代码”参数。
我知道,这部分有点复杂,但你应该看我上面链接的视频,这将是有用的,更容易理解
然后你可以复制我的代码的第二部分并使用它。但是,当然,改变参数。
code_payload = {
'grant_type': 'authorization_code',
'code': code,
'redirect_uri': redirect_uri,
}
auth_str = '{}:{}'.format(client_id, client_secret)
b64_auth_str = base64.urlsafe_b64encode(auth_str.encode()).decode()
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic {}'.format(b64_auth_str)
}
new_response = requests.post(url=API_URL, headers=headers, params=code_payload)
print(new_response.text)
这个答案也可以改进很多,所以我真的很想在这里看到你的反馈或其他答案,以使这个方法更简单、更美好
我正在尝试编写一个Python脚本,通过Spotify应用程序创建一个Spotify播放列表。我已经在Spotify的开发中心成功创建了一个应用程序,并将必要的变量输入到Spotipy的示例中(见下文)。但是,该脚本没有正确授权。我在服务器运行和不运行的情况下都进行了尝试,但都无济于事。堆栈上有类似的问题,但它们并没有提供完整的解决方案。任何建议都会很有帮助。 这是我通过命令提示符收到的消息: 用
预备条件: VM 配置:Ubuntu 12.04 (x86) 什么是爆破? 在这个技巧中,攻击者选择特定的 Libc 基址,并持续攻击程序直到成功。假设你足够幸运,这个技巧是用于绕过 ASLR 的最简单的技巧。 漏洞代码: 编译命令: 上面展示了,Libc 随机化仅限于 8 位。因此我们可以在最多 256 次尝试内,得到 root shell。在下面的利用代码中,让我们选择作为 Libc 基址,并
Koa自述是下一代web框架: 由 Express 原班人马打造的 Koa,致力于成为一个更小、更健壮、更富有表现力的 Web 框架。 使用 Koa 编写 web 应用,通过组合不同的 generator, 可以免除重复繁琐的回调函数嵌套,并极大地提升常用错误处理效率。 Koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。 像Ruby Rac
你有最好的想法,你会打动世界!你会成为一个亿万富豪!你的大脑与这个概念融为一体,你会在你的梦想中看到它,它像幽灵一样困扰着你。下一步就是实现它,将其从大脑中移出并放进计算机。你必须杀死鬼魂,将幽灵从灵魂世界中带出来,将其绑定到一个 Python 图腾上,并将其扔到互联网的海洋中。 对你而言足够有创意嘛? 创造力的敌人就是起步。如果在安装程序的过程中存在障碍,你怎么能实现你的梦想?如果你的想法非常强
(Have you already read part one? If not, that's here .) (你读过第一部分么?如果没有,请戳这里)。 This series of articles is about functional specifications, not technicalspecifications. People get these mixed up. I don'
我尝试在我的DB中更新一个表“image”并插入blob类型。 ImageClass: Hibernate用户映射: 利布: 错误: