Spotify:使用不接受重定向 url 的 web api 登录

Posted

技术标签:

【中文标题】Spotify:使用不接受重定向 url 的 web api 登录【英文标题】:Spotify: Login using the web api not accepting redirect url 【发布时间】:2016-09-07 16:23:24 【问题描述】:

我正在尝试使用 Web API 登录 Spotify,因为我不需要会话对象。在我的授权方法中,我需要传入重定向 url,但是 .GET 请求中不接受 ios 重定向 url 的格式化方式。

func authorize() 
    // create the url
    let url = "https://accounts.spotify.com/authorize"

    // parameters
    let parameters = ["client_id" : kClientID,
                      "response_type" : "code",
                      "redirect_uri" : "spotify-discover-login://callback",
                      "state" : kState,
                      "scope" : kScopes]

    // response code
    var responseCode = 401

    Alamofire.request(.GET, url, parameters: parameters, headers: nil)
        .responseStringresponse in
            print(response)
            switch response.result 
            case .Success:
                if let response = response.response 
                    responseCode = response.statusCode
                
            case .Failure:
                print("fail")
                return
            

            switch responseCode 
            case 200:
                print("200")
            case 202:
                print("@ACCEPTED")
            case 400:
                print("@BAD REQUEST")
            case 401:
                print("@AUTH FAIL")
            case 403:
                print("@FORBIDDEN")
            case 1004:
                print("@COULD NOT CONNECT")
            default: break
            
    

更新:

这是 Xcode 给我的错误:

失败:错误域=NSURLErrorDomain 代码=-1002“不支持的 URL” UserInfo=NSUnderlyingError=0x7fc89b4677a0 错误 域=kCFErrorDomainCFNetwork 代码=-1002 "(null)", NSErrorFailingURLStringKey = Spotify的,发现登录://回调/码= AQDKy5g8QOVodDd0kTEmqG-MXKdPmKiPzzSUSfZAY_Nh0J_SW8LYl7s583Pe6mu1kJcHA6Hyudpwhu-FkBXagvFE_Vh8ZVXsSP8sMZvJTikPkdJeV57vgJaL9f6K9QMLfGbIb1XuhqadLP30SGejyDoLGgVoLVtrW_ryWK4KQRwvQKNiitAW9kBDYry6A70i6R7aosFKOQrhswYxhH3Lre0ieBnCt0HrLozp3qQvnk36NKY2Ur2OdI92JOaf4Gk3UmLbrIyjcvUzdeK21tk-bkog9em0x3jJBKgeSAmiFz05ioehlboD9D79uvKPFfnA3hkvfBNFN5dvegiBcRfik7mNebckD2WRABqPyid5Xw8zt092sheCwhuxQDh13-LxGC4WfTlA5ydNrZlwQA5_5JcMQvgZZOA&状态=随机字符串的状态, NSErrorFailingURLKey = Spotify的,发现登录://回调/码= AQDKy5g8QOVodDd0kTEmqG-MXKdPmKiPzzSUSfZAY_Nh0J_SW8LYl7s583Pe6mu1kJcHA6Hyudpwhu-FkBXagvFE_Vh8ZVXsSP8sMZvJTikPkdJeV57vgJaL9f6K9QMLfGbIb1XuhqadLP30SGejyDoLGgVoLVtrW_ryWK4KQRwvQKNiitAW9kBDYry6A70i6R7aosFKOQrhswYxhH3Lre0ieBnCt0HrLozp3qQvnk36NKY2Ur2OdI92JOaf4Gk3UmLbrIyjcvUzdeK21tk-bkog9em0x3jJBKgeSAmiFz05ioehlboD9D79uvKPFfnA3hkvfBNFN5dvegiBcRfik7mNebckD2WRABqPyid5Xw8zt092sheCwhuxQDh13-LxGC4WfTlA5ydNrZlwQA5_5JcMQvgZZOA&状态=随机字符串的状态, NSLocalizedDescription=不支持的网址

【问题讨论】:

您能否提供更多关于它在 GET 请求中未被接受的信息?您是从服务器收到响应还是整个 API 请求都失败了?如果有,请发布完整的错误消息。 @ChristopherWhidden 我用 Xcode 给我的错误更新了问题。 【参考方案1】:

NSURLErrorDomain代码-1002指向一个NSURLErrorUnsupportedURL错误。根据Apple,这错误的手段:

NSURLErrorUnsupportedURL P>

时返回一个适当地形成URL不能由框架处理。 P>

最可能的原因是,存在用于URL没有可用的协议处理程序。 P>

可用在IOS 2.0和更新版本。 P>

据NSHipster,这错误的手段:

“由于未能不受支持的URL方案的连接。” P>

所以,适当地形成你的网址,但有一个知道如何处理“的Spotify,发现登录”协议做任何协议处理程序。 P>

但是,当然,这是你的自定义URL方案。确保你已经正确注册您的自定义URL方案在您的info.plist和实施 application:openURL:options:。看到这个tutorial。

作为一个方面说明,您的自定义URL方案的名称是相当通用的。另一个应用程序或Spotify应用本身可能使用相同的方案无论是现在还是将来,这可能在调试创造头疼的你。确保创建方案独特,最有可能包括你的应用程序或您的公司在方案的名称,如“PoKoBros,Spotify的,发现登录”。 P>

【讨论】:

【参考方案2】:

当您不在 info.plist 文件中创建 this 时也会发生这种情况:

解决此问题的步骤:

转到 Project Navigato 并搜索 info.plist 文件 添加了一个名为NSAppTransportSecurity 的密钥作为Dictionary。 添加了一个名为NSAllowsArbitraryLoads 的子键为Boolean 并设置 其值为YES

最后你必须拥有:

【讨论】:

【参考方案3】:

您可以在此处阅读适用于 iOS 开发人员的 API 文档: https://developer.spotify.com/technologies/spotify-ios-sdk/tutorial/

或者在这里为 Web API 开发人员: https://developer.spotify.com/web-api/get-users-profile/

【讨论】:

以上是关于Spotify:使用不接受重定向 url 的 web api 登录的主要内容,如果未能解决你的问题,请参考以下文章

Spotify API 将 URL 重定向到本地文件系统?

带有 spotify 身份验证回调 url 的 Aspnet Core MVC 应用程序重定向到 127.0.0.1

Spotify ios SDK 登录:无效的重定向 URI

Spotify API 身份验证不使用访问令牌重定向

没有重定向 URI 的 Spotify?

(iOS) Spotify 重定向 URI 错误:SpotifyLogin.LoginError.invalidUrl