私は自分のGoogleアカウントからログインしてアクセストークンを取得できるiOS(スウィフト)アプリを持っています。iOSアプリからyoutubeに動画をアップロードすると、返信は400
アクセストークンを取得した後、私はビデオをアップロードするためにYouTubeに投稿要求を出しています。私はポストの要求を行うために使用していたコードを以下に示し
{error =
{code = 400;
errors =({domain = global;
location = part;
locationType = parameter;
message = \"Required parameter: part\";
reason = required;});
message = \"Required parameter: part\";};}"
を次のようにエラーが返さ
です。
func postVideoToYouTube(token: String, callback: @escaping (Bool) -> Void){
if videoPath == nil {
return
}
var movieData: NSData?
do {
movieData = try NSData(contentsOfFile: (videoPath?.relativePath)!, options: NSData.ReadingOptions.alwaysMapped)
} catch _ {
movieData = nil
return
}
let headers = ["Authorization": "Bearer \(token)"]
let URL = try! URLRequest(url: "https://www.googleapis.com/upload/youtube/v3/videos", method: .post, headers: headers)
print("Video Data",movieData)
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(movieData as! Data, withName: "video", fileName: "video.mp4", mimeType: "application/octet-stream")
}, with: URL, encodingCompletion: {
encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint("SUCCESS RESPONSE1: \(response)")
}
case .failure(let encodingError):
print("ERROR RESPONSE: \(encodingError)")
}
})
}
以前のエラーが禁じられた403だったが、私はスコープに「https://www.googleapis.com/auth/youtube.force-ssl」を追加して、今、私は任意の助けが理解されるであろう400
を取得しています。ありがとうございました。
HTTPリクエストに「part」パラメータが必要だと言っていますが、Youtube APIはそのパラメータに必要なものは何ですか、なぜリクエストに含まれていないのですか? (私はそれがMultipartFormDataではなく、Youtubeが望むいくつかの他のパラメータであると確信している) – zezioen