【问题标题】:Gaining authorization to modify Spotify playlists using spotipy for Python3获得使用 Python3 的 spotipy 修改 Spotify 播放列表的授权
【发布时间】:2018-11-15 12:08:14
【问题描述】:

我目前正在尝试使用 python3 模块 spotipy 来访问和编辑我的个人 Spotify 高级帐户。我通过直接输入必要的参数(用户名、客户端 ID、秘密 ID、范围和重定向 uri),使用 util.prompt_for_user_token 方法遵循了 https://github.com/plamere/spotipy/blob/master/docs/index.rst 上的教程。到目前为止,一切似乎都很好。我的代码(出于安全原因,填写用户名、客户端 ID 和客户端密码):
code

它会打开我的默认网络浏览器并将我重定向到包含代码的重定向 URL。此时,我复制并粘贴重定向 URL(根据提示)并按 Enter。它返回以下错误:

Error

对于这个特定示例,我的重定向 uri 是“http://google.com/”。但是,我尝试了多个重定向 uri,但它们似乎都对我产生了相同的错误。 (是的,我确实将我的重定向 uri 设置为我的应用程序的空白)。我花了几个小时试图通过查看在线教程、尝试不同的重定向 url、更改我的代码来解决这个问题,但还没有取得任何进展。我希望我只是在这里忽略了一个简单的错误!非常感谢任何有关如何解决此问题的反馈!

如果重要的话:我正在使用 IDE PyCharm。

【问题讨论】:

  • 很难说它可能是什么问题,一些故障排除点是 - 检查一切看起来像你在 Spotify 呈现给你的 OAuth 批准页面的 URL 中所期望的那样,你的 client_id 和秘密匹配您的开发者帐户,相同范围,删除 .cache- 并重试?
  • @RachSharp 首先感谢您就这个问题回复我!但是我仍然有问题。我尝试基本上重做整个事情并遇到了类似的问题。一切都按预期工作,但只有当我将范围设置为用户库读取时。如果我尝试使用任何其他范围,我会收到与以前相同的“错误请求”错误。对此有何见解?
  • 很难说,检查正确的范围名称,指定多个范围的正确方法可能吗?如果您在帖子中附加一个更完整的示例(例如,添加一个完整的最小示例,作为代码),我可以尝试复制。
  • @RachSharp 继承了我当前的代码:'import os import spotipy import spotipy.util as util #credentials user = 'ccmatt19' desired_scope = 'playlist-modify-private' id = os.environ.get( 'SPOT_CLIENT') secret = os.environ.get('SPOT_SECRET') uri = 'google.com' token = util.prompt_for_user_token(username = user, scope = desired_scope, client_id = id, client_secret = secret, redirect_uri = uri)

标签: python python-3.x authorization spotify spotipy


【解决方案1】:

我必须使用两种不同的解决方案来处理 redirect_uri 问题,具体取决于我使用的 IDE。对于 Jupyter Lab/Notebook,我可以使用 localhost 作为 redirect_url

sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id="your_client_id", client_secret="your_client_secret", redirect_uri="https://localhost:8890/callback/", scope="user-library-read"))

对于 Google Colab,我必须使用可公开访问的网站。我认为“https://google.com/”应该可以,但我使用了我乐队的网站,所以我记得 redirect_uri 必须与您的 Spotify Develop 仪表板设置中的匹配。

sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id="your_client_id", client_secret="your_client_secret", redirect_uri="https://yourwebsite.com/", scope="user-library-read"))

我刚刚使用了我的乐队网站,因为它更容易让我记住。确保转到 Spotify 开发者仪表板 (https://developer.spotify.com/dashboard/applications) 并将 redirect_uri 与您当时计划使用的内容相匹配。

【讨论】:

    【解决方案2】:

    我认为这是您的重定向 URL - 为我工作:

    import os
    import spotipy.util as util
    
    # credentials
    user = 'username'
    desired_scope = 'playlist-modify-private'
    id = os.environ.get('SPOT_CLIENT')
    secret = os.environ.get('SPOT_SECRET')
    uri = 'https://localhost'
    token = util.prompt_for_user_token(username=user,
                                       scope=desired_scope,
                                       client_id=id,
                                       client_secret=secret,
                                       redirect_uri=uri)
    

    我认为对于您的重定向 url,spotify 需要初始的 http(s) 部分 - 不要忘记将其添加到您的 Spotify for Developers 应用程序的白名单中,否则您将获得“invalid-redirect-uri” .

    【讨论】:

    • 好的,我发现了问题!原来重定向链接中没有“&”符号。我在链接末尾添加了“&”,一切顺利。不知道他为什么会这样,但我很高兴我让它工作了。感谢您的帮助,我真的很感激!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多