Spotify 会话更新问题

Posted

技术标签:

【中文标题】Spotify 会话更新问题【英文标题】:Spotify Session Renewal Issue 【发布时间】:2019-05-27 01:58:06 【问题描述】:

我正在尝试在我的 ios 应用程序中使用 spotify,到目前为止效果很好。在用户登录并给我请求的范围后,我将存储会话,他们可以使用应用程序内的所有内容。访问令牌过期 60 分钟后问题出现。那时我正在检索 401,我正在调用我的函数来更新我的访问令牌,但不知何故这根本不起作用。

private let sessionManager = AppDelegate().sessionManager

func initiateSpotifySession() 
    let requestedScopes: SPTScope = [.playlistModifyPublic, .playlistModifyPrivate, .ugcImageUpload]
    sessionManager.initiateSession(with: requestedScopes, options: .default)


func renewSpotifySession() 
    let session = loadSpotifySession()

    if session != nil 
        sessionManager.renewSession()
     else 
        print("login required")
    

initiateSpotifySession 可以完美运行,但是一旦我请求sessionManager.renewSession() 函数,它就不起作用了。没有出现错误,也没有调用以下委托;

func sessionManager(manager: SPTSessionManager, didRenew session: SPTSession) 
    print("running the renewal")

我的 iOS 应用程序控制台记录了类似的内容; Task <C4C4A6C0-64D7-49EC-81AF-D6E581CD27AE>.<1> finished with error - code: -999,仅此而已。

刷新令牌可用,我可以打印它。不知何故,renewSession 不起作用。

我用于刷新和检索的服务器是 Spotify 在其快速入门指南中提供的 1 步单击 Heroku。

【问题讨论】:

没有崩溃或类似情况?是否有错误的委托方法? 是的,有,而且我在那边也有打印声明,但也没有抛出任何东西。 是的,如果没有任何问题,除非有人在我不确定您如何继续前进之前遇到了同样的问题。也许联系 Spotify?可能是他们系统中的错误。您还可以使用 Charles 代理之类的应用程序来检查响应并查看 Spotify 给您的响应类型,这可能会提示您正在发生什么。 嗯,很公平。今晚将尝试仅使用更新功能运行一个空项目。如果这也不起作用,我会自己联系 Spotify 并询问他们发生了什么。无论如何,谢谢。 创建了一个示例项目。每当我在启动函数中立即调用更新函数时,它就会起作用。只要我请求更新功能,它就会返回-999。如果您仍然有兴趣解决这个问题@CharlieFish,我可以在我原来的问题中发布更多代码! 【参考方案1】:

好的,解决了。我正在存储我的会话,但忘记将它重新分配给 sessionManager。这样我的会话总是为零,并且在请求续订时没有刷新令牌导致它不返回新的访问令牌。

通过重新分配会话解决了这个问题!

【讨论】:

以上是关于Spotify 会话更新问题的主要内容,如果未能解决你的问题,请参考以下文章

Spotify SDK 缺少令牌刷新服务?

Node.js Express Spotify API保存在会话中

Laravel 不会删除/更新会话

拥有一个不会更新用户 java 会话的 servlet

在javascript中更新Django会话变量?

节点、快递、护照 - 更新记录后更新会话