Spotify:使用网页apilogin不接受redirecturl

我正在尝试使用Web APIlogin到Spotify,因为我不需要会话对象。 在我的授权方法中,我需要传入redirecturl,但格式化iOSredirecturl的方式在.GET请求中不被接受。

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“不支持的URL”
的UserInfo = {NSUnderlyingError = 0x7fc89b4677a0 {错误域= kCFErrorDomainCFNetwork代码= -1002 “(空)”},NSErrorFailingURLStringKey = Spotify的-发现login://callback/代码= AQDKy5g8QOVodDd0kTEmqG-MXKdPmKiPzzSUSfZAY_Nh0J_SW8LYl7s583Pe6mu1kJcHA6Hyudpwhu-FkBXagvFE_Vh8ZVXsSP8sMZvJTikPkdJeV57vgJaL9f6K9QMLfGbIb1XuhqadLP30SGejyDoLGgVoLVtrW_ryWK4KQRwvQKNiitAW9kBDYry6A70i6R7aosFKOQrhswYxhH3Lre0ieBnCt0HrLozp3qQvnk36NKY2Ur2OdI92JOaf4Gk3UmLbrIyjcvUzdeK21tk-bkog9em0x3jJBKgeSAmiFz05ioehlboD9D79uvKPFfnA3hkvfBNFN5dvegiBcRfik7mNebckD2WRABqPyid5Xw8zt092sheCwhuxQDh13-LxGC4WfTlA5ydNrZlwQA5_5JcMQvgZZOA&状态=随机串-state,NSErrorFailingURLKey = Spotify的-发现login://callback/代码= AQDKy5g8QOVodDd0kTEmqG-MXKdPmKiPzzSUSfZAY_Nh0J_SW8LYl7s583Pe6mu1kJcHA6Hyudpwhu-FkBXagvFE_Vh8ZVXsSP8sMZvJTikPkdJeV57vgJaL9f6K9QMLfGbIb1XuhqadLP30SGejyDoLGgVoLVtrW_ryWK4KQRwvQKNiitAW9kBDYry6A70i6R7aosFKOQrhswYxhH3Lre0ieBnCt0HrLozp3qQvnk36NKY2Ur2OdI92JOaf4Gk3UmLbrIyjcvUzdeK21tk-bkog9em0x3jJBKgeSAmiFz05ioehlboD9D79uvKPFfnA3hkvfB NFN5dvegiBcRfik7mNebckD2WRABqPyid5Xw8zt092sheCwhuxQDh13-LxGC4WfTlA5ydNrZlwQA5_5JcMQvgZZOA&state = random-string-state,NSLocalizedDescription =不支持的URL}

NSURLErrorDomain代码-1002指向NSURLErrorUnsupportedURL错误。 据苹果公司称 ,这个错误意味着:

NSURLErrorUnsupportedURL

当正确形成的URL不能被框架处理时返回。

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

在iOS 2.0及更高版本中可用。

根据NSHipster ,这个错误意味着:

“由于不支持的URLscheme,连接失败。”

所以你的URL是正确的,但没有协议处理程序知道如何处理“spotify-discover-login”协议。

但当然这是您的自定义URLscheme。 确保你已经在你的info.plist中正确地注册了你的自定义URLscheme,并实现了application:openURL:options: 看到这个教程 。

作为一个侧面说明,您的自定义URLscheme名称是相当通用的。 另一个应用程序或Spotify应用程序本身现在或将来都可能使用完全相同的scheme,这可能会让您在debugging时头疼。 确保使计划独一无二,最有可能包括您的应用程序或您的公司的名称,如“PoKoBros-spotify-discover-login”。

您可以在这里阅读iOS开发者的API文档: https : //developer.spotify.com/technologies/spotify-ios-sdk/tutorial/

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

当你不在你的info.plist文件中这样做的时候,也会发生这种情况:

解决这个问题的步骤:

  • 转到Project Navigato并searchinfo.plist文件
  • 添加了一个名为NSAppTransportSecurity的密钥作为Dictionary
  • 添加了一个名为NSAllowsArbitraryLoads的子项,并将其值设置为YES

最后你必须有:

在这里输入图像说明