Spotify:使用不接受重定向网址的网络API登录

时间:2016-05-12 03:17:55

标签: ios swift url get spotify

我正在尝试使用Web API登录Spotify,因为我不需要会话对象。在我的authorize方法中,我需要传入重定向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)
        .responseString{response 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给我的错误:

  

FAILURE:错误域= NSURLErrorDomain代码= -1002"不支持的网址"
  UserInfo = {NSUnderlyingError = 0x7fc89b4677a0 {错误   Domain = kCFErrorDomainCFNetwork Code = -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 =不支持的网址}

3 个答案:

答案 0 :(得分:4)

NSURLErrorDomain代码-1002指向NSURLErrorUnsupportedURL错误。根据{{​​3}},此错误表示:

  

NSURLErrorUnsupportedURL

     

当框架无法处理正确形成的URL时返回。

     

最可能的原因是URL没有可用的协议处理程序。

     

适用于iOS 2.0及更高版本。

根据Apple,此错误表示:

  

"由于URL方案不受支持,连接失败。"

所以你的网址是正确形成的,但是没有协议处理程序知道如何处理" spotify-discover-login"协议。

但当然这是您的自定义网址方案。确保您已在info.plist中正确注册了自定义URL方案并已实施 application:openURL:options:。请参阅此NSHipster

作为旁注,您的自定义URL方案名称非常通用。另一个应用程序或Spotify应用程序本身可能现在或将来使用完全相同的方案,这可能会让您在调试时感到头疼。确保方案的独特性,最有可能包括您的应用程序或您公司在计划中的名称,例如" PoKoBros-spotify-discover-login"。

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

当您在info.plist文件中没有this时,也会发生这种情况:

解决此问题的步骤:

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

最后你必须:

enter image description here