尝试使用 youtube API v3 for c# 上传视频时收到 400 个错误请求



使用以下代码:

    public async Task<YouTubeService> GetYouTubeService(string userEmail)
    {
        UserCredential credential;
        using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
        {
            GoogleWebAuthorizationBroker.Folder = "Tasks.Auth.Store";
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets,
                new[]
                {
                    YouTubeService.Scope.Youtube,
                    YouTubeService.Scope.Youtubepartner,
                    YouTubeService.Scope.YoutubeUpload,
                    YouTubeService.Scope.YoutubepartnerChannelAudit,
                    YouTubeService.Scope.YoutubeReadonly
                },
                userEmail,
                CancellationToken.None,
                new FileDataStore("YouTube.Auth.Store")).Result;
        }
        var youtubeService = new YouTubeService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = this.GetType().ToString()
        });
        return youtubeService;
    }
            var video = new Video();
            video.Snippet = new VideoSnippet();
            video.Snippet.Title = "Default Video Title";
            video.Snippet.Description = "Default Video Description";
            video.Snippet.Tags = new string[] { "tag1", "tag2" };
            video.Snippet.CategoryId = "22";
            video.Status = new VideoStatus();
            video.Status.PrivacyStatus = "public";
            var filePath = @"c:tempnouvelair.mp4";
            using (var fileStream = new FileStream(filePath, FileMode.Open))
            {
                var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet.status", fileStream, "video/*");
                videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged;
                videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;
                await videosInsertRequest.UploadAsync();
            }

    public void videosInsertRequest_ProgressChanged(Google.Apis.Upload.IUploadProgress progress)
    {
        switch (progress.Status)
        {
            case UploadStatus.Uploading:
                Console.WriteLine("{0} bytes sent.", progress.BytesSent);
                break;
            case UploadStatus.Failed:
                Console.WriteLine("An error prevented the upload from completing.n{0}", progress.Exception);
                break;
            case UploadStatus.Completed:
                Console.WriteLine("An error prevented the upload from completing.n{0}", progress.Exception);
                break;
        }
    }

在函数videosInsertRequest_ProgressChanged中,首先我得到视频开始的状态,然后在我得到失败状态后立即出现以下异常:

响应状态代码不指示成功:400(错误请求)。

您正在尝试在不存在的部分中设置值; 作为您的部件参数,您有:

snippet.status

但是您需要用逗号而不是点分隔部分:

var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", fileStream, "video/*");

相关内容

  • 没有找到相关文章

最新更新