.canHandle 方法拒绝了 Spotify 登录 URL

Posted

技术标签:

【中文标题】.canHandle 方法拒绝了 Spotify 登录 URL【英文标题】:Spotify Login URL rejected by .canHandle method 【发布时间】:2016-11-03 09:50:57 【问题描述】:

我尝试遵循 Spotify ios SDK 教程 (https://developer.spotify.com/technologies/spotify-ios-sdk/tutorial/)。使用下面的 SPTAuth 方法构建登录 URL 后,本教程说要检查登录 URL 是否是有效的 Spotify 授权 URL,使用:SPTAuth.defaultInstance().canHandleURL(loginURL)。但是,此方法返回 false,使我无法登录用户。

这是设置我的登录 URL 的代码:

    SPTAuth.defaultInstance().clientID = "3d9c120475a047fab9b1d735ca68dce8"
    SPTAuth.defaultInstance().redirectURL = NSURL(string: "second-test-spotify://callback")
    SPTAuth.defaultInstance().requestedScopes = [SPTAuthStreamingScope]
    var loginURL = SPTAuth.defaultInstance().loginURL

我也尝试了这个替代的类方法来设置登录 URL,它也不起作用。

let loginURL = SPTAuth.loginURLForClientId("3d9c120475a047fab9b1d735ca68dce8", withRedirectURL: NSURL(string: "second-test-spotify://callback"), scopes: [SPTAuthStreamingScope], responseType: "token")

以下是这两种方法返回的登录 URL:

spotify-action://authorize?client_id=3d9c120475a047fab9b1d735ca68dce8&scope=streaming&redirect_uri=second-test-spotify%3A%2F%2Fcallback&nosignup=true&nolinks=false&response_type=token

我的代码在 Swift 中,尽管 Spotify SDK 在 Objective C 中,因为我使用了桥接头。

【问题讨论】:

【参考方案1】:

我意识到我错误地调用了包含 .canHandle 方法的 openURL 函数。我将我的代码移动到 AppDelegate.swift 文件中,并用这个函数定义替换了 openURL 函数定义:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool 然后我在创建 loginURL 后调用了 application.openURL,它工作正常。

【讨论】:

以上是关于.canHandle 方法拒绝了 Spotify 登录 URL的主要内容,如果未能解决你的问题,请参考以下文章

与 Spotify 新库相关的 iOS App Rejection

欧洲科技业一周十大投资并购事件:Spotify宣布收购Preact ,促进高级用户群增长

可以在没有 Spotify 帐户的情况下使用可可 libspotify 元数据方法吗?

从 Spotify API 获取我自己的播放列表的最简单方法是啥?

通过 Spotify API 在 skipToNext() 方法中使用回调

在 Javascript 中调试 Spotify 应用程序——必须有更好的方法 [关闭]