- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想做什么:我正在将 Spotify SDK 实现到我的 iOS 项目中。我已成功收到 Spotify API 的访问 token ,因为我能够使用所述 API 执行搜索艺术家、搜索歌曲和查看播放列表等操作。
我努力做的一件事是使用 SDK 播放音乐。我有一个按钮,单击该按钮后,我希望发生以下流程:
我通过执行以下功能并使用以下 session 管理器请求访问 Spotify:
let SpotifyClientID = "###"
let SpotifyRedirectURL = URL(string: "bandmate://")!
lazy var configuration = SPTConfiguration(
clientID: SpotifyClientID,
redirectURL: SpotifyRedirectURL
)
lazy var sessionManager: SPTSessionManager = {
if let tokenSwapURL = URL(string: "https://bandmateallcaps.herokuapp.com/api/token"),
let tokenRefreshURL = URL(string: "https://bandmateallcaps.herokuapp.com/api/refresh_token") {
configuration.tokenSwapURL = tokenSwapURL
configuration.tokenRefreshURL = tokenRefreshURL
configuration.playURI = ""
}
let manager = SPTSessionManager(configuration: configuration, delegate: self)
return manager
}()
func requestSpotifyAccess() {
let requestedScopes: SPTScope = [.appRemoteControl, .userReadPrivate]
self.sessionManager.initiateSession(with: requestedScopes, options: .default)
}
启动 SPTSession 后,我想连接我的 Remote :
lazy var appRemote: SPTAppRemote = {
let appRemote = SPTAppRemote(configuration: configuration, logLevel: .debug)
appRemote.delegate = self
return appRemote
}()
func sessionManager(manager: SPTSessionManager, didInitiate session: SPTSession) {
self.appRemote.connectionParameters.accessToken = session.accessToken
self.appRemote.connect()
}
应用程序连接后,我想播放全局声明的 Spotify 轨道的 ID:
var pendingSpotifyId: String!
func appRemoteDidEstablishConnection(_ appRemote: SPTAppRemote) {
print("connected")
self.appRemote.playerAPI!.delegate = self
self.appRemote.playerAPI!.subscribe(toPlayerState: { (result, error) in
if let error = error {
debugPrint(error.localizedDescription)
} else if self.pendingSpotifyId != nil {
self.appRemote.playerAPI!.play(self.pendingSpotifyId, callback: { (any, err) in
self.pendingSpotifyId = nil
})
}
})
}
我的问题:每当我尝试启动 session 时,此流程都会中断,sessionManager(manager: SPTSessionManager, didFailWith error: Error)
总是调用返回以下错误: Error Domain=com.spotify.sdk.login Code=1 "invalid_grant" UserInfo={NSLocalizedDescription=invalid_grant}
我需要 session 成功启动以便 sessionManager(manager: SPTSessionManager, didInitiate session: SPTSession)
可以打电话,我可以连接我的 Remote ,最终播放我的 Spotify 轨道。
我尝试过的:我已经确保了很多事情:
确保在接收访问 token 时使用正确的范围。返回的 JSON 类似于:
{"access_token":"###","token_type":"Bearer","expires_in":3600,"refresh_token":"###","scope":"app-remote-control user-read-private"}
我怀疑的事情:我不知道我通过 Heroku 进行的 token 交换是否正确完成。这是我能想到为什么我会遇到这个问题的唯一原因。如果我能够使用 Spotify API,这个证据是否足以证明我的代币交换是正确完成的? (我怀疑是)
最佳答案
这是我们的发现,希望对您有所帮助:
Bundle ID
和 App Callback URL
必须在 App Info.plist、源代码、Spotify App Dashboard 和 Heroku Env Vars 中精确匹配.使用的 Bundle ID 必须与您的应用程序 Bundle ID 匹配。App Callback URL
不能有空路径,即:my-callback-scheme://spotify-login-callback
App Callback URL
将被调用两次导致错误。configuration.playURI
可能需要设置为空字符串而不是 nil。示例应用程序上有注释。open url
方法调用正确的对象可能会很棘手。关于ios - Spotify SessionManager 不断失败并出现错误 "invalid_grant",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57332662/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!