Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用swift3如何使用alamofire在youtube上上传视频?_Ios_Swift3 - Fatal编程技术网

Ios 使用swift3如何使用alamofire在youtube上上传视频?

Ios 使用swift3如何使用alamofire在youtube上上传视频?,ios,swift3,Ios,Swift3,目前,我正在使用Alamofire上传功能将视频上传到youtube上。但我从响应中收到一条错误消息。 我使用的代码如下 The response is SUCCESS: { error = { code = 401; errors = ( { domain = global; location = Authorizati

目前,我正在使用Alamofire上传功能将视频上传到youtube上。但我从响应中收到一条错误消息。 我使用的代码如下

The response is SUCCESS: {
    error =     {
        code = 401;
        errors =         (
                        {
                domain = global;
                location = Authorization;
                locationType = header;
                message = "Login Required";
                reason = required;
            }
        );
        message = "Login Required";
    };
}
var视频数据:NSData

func postVideoToYouTube(token: String, callback: @escaping (Bool) -> Void){

    let videoPath = Bundle.main.path(forResource: "video", ofType: "mp4")
    do{
        videodata = try NSData(contentsOfFile: videoPath!, options:NSData.ReadingOptions.alwaysMapped)
    }
    catch _ {
        videodata = nil
        return
    }
    let headers: HTTPHeaders = [ "auth-token": "\(String(describing: userToken))" ]
    let URL = try! URLRequest(url: "https://www.googleapis.com/upload/youtube/v3/videos?part=id", method: .post, headers: headers)

    Alamofire.upload(
        multipartFormData: { multipartFormData in
            multipartFormData.append(videodata! as Data, withName: "video", fileName: "video.mp4", mimeType: "application/octet-stream")
    },
        with: URL,
        encodingCompletion: { encodingResult in
            switch encodingResult {
            case .success(let upload, _, _):

                upload.uploadProgress(closure: { (Progress) in

                    print("Upload Progress:%d", Progress)

                })

                upload.responseJSON { response in
                    print(response.request!)  // original URL request
                    print(response.response!) // URL response
                    print(response.data!)     // server data
                    print(response.result)

                    if((response.result.value) != nil) {
                        print("response is",response)
                        callback(true)
                    } else {
                        print("else")
                        callback(false)
                    }
                }
            case .failure( _):
                break
            }
    })

}
我得到一个错误如下

The response is SUCCESS: {
    error =     {
        code = 401;
        errors =         (
                        {
                domain = global;
                location = Authorization;
                locationType = header;
                message = "Login Required";
                reason = required;
            }
        );
        message = "Login Required";
    };
}

实际上,我不知道它为什么会显示此错误消息,但我尝试使用Gmail登录,但它不起作用。希望任何人都能帮助我。

您是否在“auth token”中传递userToken值?没有HTTP头
auth token
。通常是
授权
。你确定那个标题吗?顺便说一句,一旦你完成了这个任务,我可能倾向于使用后台会话进行上传(这对于Alamofire来说无疑是一个麻烦)因为上载视频有时可能需要很长时间,并且您可能不希望应用程序在上载过程中依赖于留在应用程序中的用户。您是否在“auth token”中传递userToken值?没有HTTP头
auth token
。通常是
授权
。你确定那个标题吗?顺便说一句,一旦你完成了这个任务,我可能倾向于使用后台会话进行上传(这对于Alamofire来说无疑是一个麻烦),因为上传视频有时可能需要很长时间,你可能不希望应用程序在上传过程中依赖于用户留在应用程序中。