Spotify SDK 缺少令牌刷新服务?

Posted

技术标签:

【中文标题】Spotify SDK 缺少令牌刷新服务?【英文标题】:Spotify SDK Missing token refresh service? 【发布时间】:2018-02-18 18:12:57 【问题描述】:

我试图避免每次会话在 Spotify for SDK 中过期时向用户授予弹出式权限。

一小时后弹出弹出窗口可能会再次向用户授予权限,以便他可以在我的应用程序上播放来自 Spotify 的曲目,我在尝试更新会话时遇到的错误:

[PLAYER][PLAY][SPOTIFY] Error renew Session Optional(Error Domain=com.spotify.auth Code=0 "Missing token refresh service." UserInfo=NSLocalizedDescription=Missing token refresh service.)
[PLAYER][SPOTIFY] Session could not be renewed,popup login

这里是我如何尝试更新会话:

//Renew Session
func renewSession(completion:@escaping (Bool)->())

    print("[PLAYER][PLAY][SPOTIFY] Renew Session requested ")

    let auth = SPTAuth.defaultInstance()
        auth?.renewSession(auth?.session, callback:  (error, session) in

            if (error != nil)
            
                print("[PLAYER][PLAY][SPOTIFY] Error renew Session \(String(describing: error))")
                completion(false)
                return
            

            auth?.session = session

            if auth?.session.isValid() == true
            
                print("[PLAYER][PLAY][SPOTIFY] Renew Session Success")
                completion(true)
            else
            
                print("[PLAYER][PLAY][SPOTIFY] Renew Session Failed")
                completion(false)
            
    )


有什么解决办法吗?

【问题讨论】:

目前 SDK 自身可能存在问题。获取加密的刷新令牌 nil 因此无法更新会话。 github.com/spotify/ios-sdk/issues/880 临时我使用已弃用的 SPTAuthViewController 解决了这个问题,我尝试了所有方法并投入了近 36 小时来获得刷新令牌。 【参考方案1】:

您是否为您的 SPTAuth 对象分配了这些属性?

[SPTAuth defaultInstance].tokenSwapURL = [NSURL URLWithString:@"swapURL"]; [SPTAuth defaultInstance].tokenRefreshURL = [NSURL URLWithString:@"refreshURL"];

取自https://github.com/spotify/ios-sdk/issues/427,如果这还不够,可能会有更多信息。

还有一个 SPTAuth 类的参考:

https://spotify.github.io/ios-sdk/Classes/SPTAuth.html

【讨论】:

我使用的SDK是swift而不是objective-c,我没有objective-c的知识,如何用swift编写?

以上是关于Spotify SDK 缺少令牌刷新服务?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spotify SDK for Android 上刷新访问令牌?

如何使用 Spotify SDK 和 Swift 3 正确处理令牌刷新。错误代码 = 3840

Spotify Web API - 缺少 401 权限

使用来自 django-allauth 的访问令牌登录 Spotify iOS SDK

Google Oauth 响应文件中缺少刷新令牌

带有 iOS SDK 的 Spotify 长期令牌