【问题标题】:Spotipy can't authenticate on Azure Functions (OAuth)Spotipy 无法在 Azure Functions (OAuth) 上进行身份验证
【发布时间】:2021-11-04 02:07:53
【问题描述】:

我制作的脚本在本地运行时运行良好,但无法在我的 Azure Functions 应用程序中进行身份验证。一开始我以为是因为它无法读取.cache文件。

查看日志后,这是因为它无法打开浏览器窗口来创建身份验证令牌。我对 Azure 功能还很陌生,所以我不确定如何启用打开浏览器(如果可能的话)。

我在 spotipy 中查看了 oauth2.py 文件,发现打开浏览器是可选的,但是控制台要求提供重定向的 URL。有没有办法让我获取重定向的 URL 并将其输入到控制台中?

这是我的代码:

def create_playlist(cred):
    """Creates the playlist for Discover weekly to be copied to"""
    # Gain authorization to create playlist
    logging.info('Authenticating spotify secrets to create new playlist...')
    # spotipy.CacheFileHandler(cache_path='')
    sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=cred[0],
                                                   client_secret=cred[1],
                                                   redirect_uri=cred[2],
                                                   scope='playlist-modify-private',
                                                   open_browser=False,
                                                   ))
    # Get returned list from get_playlist_info function
    logging.info('Determining playlist descriptors...')
    info = get_playlist_info()

    # New playlist for Discover Weekly
    logging.info('Creating new playlist...')
    new_playlist = sp.user_playlist_create(user=cred[4],
                                           name=info[0],
                                           public=False,
                                           collaborative=False,
                                           description=info[1])
    logging.info('Returning new playlist.')
    return new_playlist

【问题讨论】:

    标签: python azure azure-functions spotipy


    【解决方案1】:

    在重定向 URIs 中,您输入一个或多个您想通过 Spotify 列入白名单的地址。并且此 URI 使 Spotify 身份验证服务能够在用户每次登录时自动重新启动您的应用程序。

    您可以通过导航到您的 Spotify 开发者仪表板并打开您正在处理的项目来设置您的重定向 URL。然后单击“编辑设置”并查找重定向 URI 字段并将您的重定向 URI 放入该字段并最后保存。

    授权代码流程需要您在My Dashboard中为您的应用程序添加一个重定向URIredirect_uri 参数或 SPOTIPY_REDIRECT_URI 环境变量必须与添加到仪表板中应用程序的重定向 URI 匹配。

    以下是一些可用作重定向 URI 的示例。

    http://example.comhttp://localhosthttp://127.0.0.1:9090

    验证自己的正确方法如下面的代码 sn-p 所示。

    token = util.prompt_for_user_token(
            username=USERNAME,
            scope=SCOPE,
            client_id=CLIENT_ID,
            client_secret=CLIENT_SECRET,
            redirect_uri=REDIRECT_URI)
    

    您还应该在运行脚本并尝试进行身份验证之前导出您的 redirect_uri、客户端 ID 和密码。如果您不直接将值传递给 util.prompt_for_user_token 函数,它将从环境中读取它们。

    在运行脚本之前尝试在终端中运行这些。

    export SPOTIPY_CLIENT_ID="YOUR CLIENT ID"
    export SPOTIPY_CLIENT_SECRET="YOUR CLIENT SECRET"
    export SPOTIPY_REDIRECT_URI='http://localhost/'

    有关更多信息,您可以阅读此 Authorization Code Flow 文档以获取 Spotipy。

    【讨论】:

    • 本地认证没有问题。所有参数均已配置并可访问。 Azure Functions 上的身份验证会出现问题,因为需要打开浏览器但不可能(或者至少我认为不可能)。所以,我正在尝试确定是否可以在不打开浏览器的情况下打开 URL,可能使用 curl 或其他东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 2018-03-27
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多