是否可以使用 Spotify Web API 编写没有回调 URI 的桌面应用程序?

2024-02-12

我想编写一个简单的供个人使用的桌面应用程序,它使用 Spotify Web API 来构建播放列表。

然而,据我所知,如果不提供回调 URI,就无法使用 API,而我没有回调 URI,因为我没有任何类型的域或服务器(除了我的个人计算机) 。

有没有一种方法可以在没有 URI 的情况下使用 API?

如果没有,设置回调 URI 的最佳方法是什么?我没有太多使用 Web 应用程序或客户端/服务器内容的经验,而且我过去使用的 API 不需要任何类型的回调。


首先是一些背景知识,这个答案比我预期的要长一些。

您需要一个访问令牌。可通过三种方式检索访问令牌;身份验证代码流、客户端凭据流和隐式授予流。这些都是 oAuth 2.0 规范的一部分,每个都有其自己的用途。

由于您要修改用户的帐户,因此需要该用户的许可。现在,如果您没有执行任何需要用户权限的操作,则可以使用客户端凭据流程。这可能是最容易学习的流程,因为它只需要从您的服务器向 Spotify 服务器发出请求,并且响应包含访问令牌。不需要回调/重定向 URI。

我确信您已经阅读过,身份验证代码流和隐式授予流都需要回调 URI。这是因为包含用户的流,回调 URI 是 Spotify 在用户在 Spotify 网站上输入密码后重定向用户的位置。

身份验证代码流程和隐式授权流程各有优点和缺点。通过身份验证代码流检索的访问令牌可以刷新,但两者都会返回有效期为一小时的令牌。这意味着使用隐式授权流程进行身份验证的用户必须在一小时后重新进行身份验证。但是,身份验证代码流程确实需要一些后端工作,因为它需要发出请求,以将 Spotify 服务器提供的代码交换为访问令牌。隐式授予流程更加直接 - 您获得访问令牌即可开始。

回调 URI 可以是本地主机地址,因此如果您的桌面应用程序将在本地启动 Web 服务器,您可以在运行应用程序的同一台计算机上处​​理回调。 (最好不要在端口 80 上运行 Web 服务器,因为该端口可能会被其他东西使用。)

Github 上提供了每个身份验证流程的框架代码,请参阅web-api-auth-示例 https://github.com/spotify/web-api-auth-examples。详细了解我们的流程授权指南 https://developer.spotify.com/web-api/authorization-guide/。如果您选择在用户的计算机上运行 Web 服务器,我建议您使用隐式授予流程,因为它不包含任何服务器到服务器的请求,因此您不必公开您的client_secret暴露在代码中。 (与授权代码流程相反。)

另外,由于您正在使用 Python 进行编码,因此我建议您看看spotipy https://github.com/plamere/spotipy,Web API 的包装器,包含方便的方法,可以节省您一些时间。如果您确实继续使用隐式授予流程,您应该看看spotify-web-api-js https://github.com/JMPerez/spotify-web-api-js,具有类似的目的。请注意,使用 Web API 根本不需要这些包装器,但它们会让您的生活更轻松。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用 Spotify Web API 编写没有回调 URI 的桌面应用程序? 的相关文章

  • (discord.py) 尝试更改成员角色时,“用户”对象没有属性“角色”

    因此 我正在尝试编写一个机器人 让某人在命令中指定的主持人指定的一段时间内暂停角色 我知道该变量称为 小时 即使它目前以秒为单位 我稍后会解决这个问题 基本上 它是由主持人在消息 暂停 personmention numberofhours
  • Python BigQuery 存储。并行读取多个流

    我有以下玩具代码 import pandas as pd from google cloud import bigquery storage v1beta1 import os import google auth os environ G
  • 下载 PyQt6 的 Qt Designer 并使用 pyuic6 将 .ui 文件转换为 .py 文件

    如何下载 PyQt6 的 QtDesigner 如果没有适用于 PyQt6 的 QtDesigner 我也可以使用 PyQt5 的 QtDesigner 但是如何将此 ui 文件转换为使用 PyQt6 库而不是 PyQt5 的 py 文件
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐