2016-05-12 5 views
4

セッションオブジェクトは必要ないのでWeb APIを使用してSpotifyにログインしようとしています。私のauthorizeメソッドでは、リダイレクトURLを渡す必要がありますが、iOSリダイレクトURLのフォーマット方法は.GETリクエストでは受け入れられません。Spotify:Web APIを使用したログインは、リダイレクト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 
      } 
    } 
} 

UPDATE:これはXcodeのは私に与えていること、エラーが

です:

FAILURE:エラードメイン= NSURLErrorDomainコード= -1002 "サポートされていないURL"
のUserInfo = {NSUnderlyingError = 0x7fc89b4677a0 {エラー ドメイン= kCFErrorDomainCFNetworkコード= -1002 "(NULL)"}、 NSErrorFailingURLStringKey = Spotifyは、発見ログイン://コールバック/コード= AQDKy5g8QOVodDd0kTEmqG-MXKdPmKiPzzSUSfZAY_Nh0J_SW8LYl7s583Pe6mu1kJcHA6Hyudp 、//コールバック/コード= AQDKy5g8QOVodDd0kTEmqG-MXKdPmKiPzzSUSfZAY_Nh0J_SW8LYl7s583Pe6mu1kJcHA6Hyudpwhu-FkBXagvFE_Vh8ZVXsSP8sMZvJTikPkdJeV57vgJaL9f6K9QMLfGbIb1XuhqadLP30SGejyDoLGgVoLVtrW_ryWK4KQRwvQKNiitAW9kBDYry6A70i6R7aosFKOQrhswYxhH3Lre0ieBnCt0HrLozp3qQvnk36NKY2Ur2OdI92JOaf4Gk3UmLbrIyjcvUzdeK21tk-bkog9em0x3jJBKgeSAmiFz05ioehlboD9D79uvKPFfnA3hkvfBNFN5dvegiBcRfik7mNebckD2WRABqPyid5Xw8zt092sheCwhuxQDh13-LxGC4WfTlA5ydNrZlwQA5_5JcMQvgZZOA &状態=ランダムな文字列状態:WHU-FkBXagvFE_Vh8ZVXsSP8sMZvJTikPkdJeV57vgJaL9f6K9QMLfGbIb1XuhqadLP30SGejyDoLGgVoLVtrW_ryWK4KQRwvQKNiitAW9kBDYry6A70i6R7aosFKOQrhswYxhH3Lre0ieBnCt0HrLozp3qQvnk36NKY2Ur2OdI92JOaf4Gk3UmLbrIyjcvUzdeK21tk-bkog9em0x3jJBKgeSAmiFz05ioehlboD9D79uvKPFfnA3hkvfBNFN5dvegiBcRfik7mNebckD2WRABqPyid5Xw8zt092sheCwhuxQDh13-LxGC4WfTlA5ydNrZlwQA5_5JcMQvgZZOA &状態=ランダム文字列の状態、 NSErrorFailingURLKey = Spotifyは-発見ログイン? エラー0 NSLocalizedDescription =サポートされていないURL}

+1

をあなたはそれがGETで受け入れられていない方法についての詳細な情報を提供することができます要求?サーバーから応答が返ってきていますか、APIリクエスト全体が失敗しますか?あなたが持っているなら、完全なエラーメッセージを投稿してください。 –

+0

@ChristopherWhidden私はXcodeが私に与えるエラーで質問を更新しました。 – PoKoBros

答えて

4

NSURLErrorDomainコード-1002ポイント。 Appleによれば、このエラーが意味:適切に形成されたURLは、フレームワークによって処理できない場合

をNSURLErrorUnsupportedURL

返しました。

最も可能性の高い原因は、URLに対して利用可能なプロトコルハンドラがないことです。

iOS 2.0以降で使用できます。

NSHipsterによると、このエラーは次のことを意味します

を "接続がサポートされていないため、URLスキームに失敗しました。"

あなたのURLは適切に形成されていますが、「spotify-discover-login」プロトコルをどうするかを知っているプロトコルハンドラはありません。

もちろん、カスタムURLスキームです。 info.plistにカスタムURLスキームを正しく登録し、 application:openURL:options:を実装していることを確認してください。これはtutorialを参照してください。

補足として、カスタムURLスキーム名は非常に一般的です。別のアプリやSpotifyアプリケーション自体は、現在または将来、まったく同じスキームを使用する可能性があり、デバッグ時に頭痛を引き起こす可能性があります。"PoKoBros-spotify-discover-login"のように、あなたのアプリや会社の名前を含むスキームを一意にする必要があります。 https://developer.spotify.com/technologies/spotify-ios-sdk/tutorial/

または、ここのWeb API開発者のために:あなたはiOSの開発者のために、ここでAPIドキュメントを読むことができる

1

あなたのInfo.plistファイルにthisを作るいけないときにも起こっ:

この問題を解決する手順:

  • G oをProject Navigatoに送信し、info.plistファイルを検索する
  • NSAppTransportSecurityというキーをDictionaryと追加しました。
  • サブキーが最後にあなたが持っている必要がありますBooleanとしてNSAllowsArbitraryLoadsと呼ばれ、YES

に その値を設定追加しました:

enter image description here

関連する問題