はその認証コードのフローのために彼らのAPIを打つための私の方法です:トークンのAPIをSpotifyに送信するとステータス415が返されます。何か不足していますか?ここ
変更する:下の方に
class func obtainAuthTokenPackage(authCode: String) throws { //Create a request var request = URLRequest(url: Gimme.theSpotify.urlFor(endpoint: .requestingTokens)) //"https://accounts.spotify.com/api/token" request.httpMethod = "POST" //Build the header let spotifyClientCreds = Gimme.theSpotify.clientID + ":" + Gimme.theSpotify.clientSecret let encodedCreds = spotifyClientCreds.data(using: .utf8)!.base64EncodedString() request.setValue("Basic \(encodedCreds)", forHTTPHeaderField: "Authorization") request.addValue("application/json", forHTTPHeaderField: "Content-Type") //Build the body var dict = [String:String]() dict["grant_type"] = "authorization_code" dict["code"] = authCode dict["redirect_uri"] = Gimme.theSpotify.redirectURI var package = Data() do { package = try JSONSerialization.data(withJSONObject: dict) } catch {print("oopsie")} request.httpBody = package //Set up a web transaction let transaction = URLSession.shared.dataTask(with: request) { (possData, possResp, possErr) in if let data = possData { print(String(data: data, encoding: .utf8)!) } } //Do it transaction.resume() }
print文は、私はすでに試した
{"error":"server_error","error_description":"Unexpected status: 415"}
物事を生成します
request.setValue(...
〜request.addValue(...
とその逆の違いはありません。application/x-www-form-urlencoded
を使用して、HTTP本体を"grant_type=authorization_code&code=" + authCode + ...".data(using: .utf8)
に変更します。
これを実行すると、APIは認可タイプをauthorization_codeに設定する必要があるというメッセージで応答します(これは、サーバーが自分のhttpボディを正しく解析していないことを示しています)。(JSONを使用して)ヘッダーから本文にクライアント資格情報を移動します。
が成功とその暗黙のグラント・フローを実装休んアプリ(それはポストマンやHTTPRequestorようなものだ)
を使用して要求スウィフト4の新しいJSONエンコーディングツールを使用して、私のHTTPボディを作成
。しかし:(それは、リフレッシュトークンを与えるものではありませんし、私はそれを必要とする。ヘッダフィールドを削除
content-type
に
Content-Type
を変更は内部すすり泣きので、私は私の周りの人の気をそらすしないでくださいすなわち
が
率(%2Fでスラッシュ、例えば%3aとコロンを置換)
redirect-uri
の文字のエスケープコンテンツタイプを指定し私が持っている件の
質問:
ステータス415がサポートされていないメディアタイプを意味し、その代わりにJSONの
application/x-www-form-urlencoded
を期待SpotifyはAPIはありますか?SwiftプロジェクトでSpotifyの認証コードフローが機能するようになったら、どうしましたか?
application/x-www-form-urlencoded
を使用している場合、httpボディをどのように作成しましたか?
ありがとうございました。
はあなたがコードしない試してみましたが安心ですヘッダーの資格情報? –
ああ、そうです。私はそれに言及するのを忘れていた。 –
JSONリクエストボディが期待されています。ガイドの[code flow](https://developer.spotify.com/web-api/authorization-guide/#authorization_code_flow)部分に読み込みを行い、全体的なチェックを「カール」で行いますが、あなたのコードは正しく見えます。 –