(iOS) Spotify 重定向 URI 错误:SpotifyLogin.LoginError.invalidUrl
Posted
技术标签:
【中文标题】(iOS) Spotify 重定向 URI 错误:SpotifyLogin.LoginError.invalidUrl【英文标题】:(iOS) Spotify Redirect URI Error: SpotifyLogin.LoginError.invalidUrl 【发布时间】:2021-06-06 20:43:36 【问题描述】:我正在尝试使用Spotify's Sample Project 实现使用 Spotify 登录。一直失败
由于我按照所有说明进行操作,因此不太确定可能是什么问题:
我的重定向 URLspotifyApp://spotify-login-callback
在重定向 URI 下正确注册
我的 URL Scheme 是spotifyApp
我的客户端 ID 和密码已复制粘贴,如开发者控制台上所示
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
let redirectURL: URL = URL(string: "spotifyApp://spotify-login-callback")!
SpotifyLogin.shared.configure(clientID: "#####1",
clientSecret: "#####1",
redirectURL: redirectURL)
return true
作为用户,我被带到 Spotify 授权页面并被重定向回应用程序,UI 和错误没有任何变化
SpotifyLogin.LoginError.invalidUrl
更新
在SpotifyLogin
的源代码中,显示invalidUrl
表示The url provided to the app can not be handled or parsed.
这是返回错误的代码
/// Process URL and attempts to create a session.
///
/// - Parameters:
/// - url: url to handle.
/// - completion: Returns an optional error or nil if successful.
/// - Returns: Whether or not the URL was handled.
public func applicationOpenURL(_ url: URL, completion: @escaping (Error?) -> Void) -> Bool
guard let urlBuilder = urlBuilder,
let redirectURL = redirectURL,
let clientID = clientID,
let clientSecret = clientSecret else
DispatchQueue.main.async
completion(LoginError.configurationMissing)
return false
guard urlBuilder.canHandleURL(url) else
DispatchQueue.main.async
completion(LoginError.invalidUrl)
return false
safariVC?.dismiss(animated: true, completion: nil)
let parsedURL = urlBuilder.parse(url: url)
if let code = parsedURL.code, !parsedURL.error
Networking.createSession(code: code,
redirectURL: redirectURL,
clientID: clientID,
clientSecret: clientSecret,
completion: [weak self] session, error in
DispatchQueue.main.async
if error == nil
self?.session = session
NotificationCenter.default.post(name: .SpotifyLoginSuccessful, object: nil)
completion(error)
)
else
DispatchQueue.main.async
NotificationCenter.default.post(name: .SpotifyLoginSuccessful, object: nil)
completion(LoginError.invalidUrl)
return true
【问题讨论】:
【参考方案1】:显然问题出在重定向 URI 本身
URI 不应包含大写字母 它应该遵循这种格式(没有括号)
((add_your_unique_scheme))://callback/
【讨论】:
以上是关于(iOS) Spotify 重定向 URI 错误:SpotifyLogin.LoginError.invalidUrl的主要内容,如果未能解决你的问题,请参考以下文章
PHP 中的 Spotify API 身份验证 - 重定向 URI 无效
Spotifyr 错误:INVALID_CLIENT:重定向 URI 无效