C# YouTube Api v3.net库,Oauth令牌在视频上载期间过期

C# YouTube Api v3.net库,Oauth令牌在视频上载期间过期,c#,.net,youtube-api,C#,.net,Youtube Api,问题和我尝试的内容: using (FileStream fileStream = new FileStream(filePath, FileMode.Open)) { VideosResource.InsertMediaUpload videosInsertRequest = youtubeService.Videos.Insert(video, parts, fileStream, "video/*"); videosInsertR

问题和我尝试的内容

 using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
 {
        VideosResource.InsertMediaUpload videosInsertRequest =
            youtubeService.Videos.Insert(video, parts, fileStream, "video/*");
        videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged;
        videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;

        await videosInsertRequest.UploadAsync();
 }
嗨!我在使用V3API将很长的视频上传到YouTube时遇到了问题,这是因为Oauth令牌需要每3600秒(1小时)刷新一次。对于大型文件(或者在上载开始时令牌即将过期的情况下),这是一个问题

现在,文档说它应该在接近到期时自动刷新,但事实并非如此,经过一些测试,我已经能够确定令牌试图刷新的时间太晚了大约2或3分钟,导致上载因未经授权的错误而停止(401)

现在,我尝试使用一个线程手动检查令牌(在Youtube服务使用的用户凭据中找到)是否即将过期,并在过期前1分钟调用UserCredential.refreshtTokenAsync。这是有效的,它实际上会及时刷新令牌,但是。。。从外观上看,InsertMediaUpload类没有使用对此令牌的引用,而是使用了一个副本,因为在调试时,我可以看到它使用的是旧令牌,即使在线程更新它之后,也会再次导致相同的错误

我的问题

 using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
 {
        VideosResource.InsertMediaUpload videosInsertRequest =
            youtubeService.Videos.Insert(video, parts, fileStream, "video/*");
        videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged;
        videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;

        await videosInsertRequest.UploadAsync();
 }
我的问题基本上是,我能做什么?有没有办法手动更新InsertMediaUpload对象正在使用的令牌?或者有没有办法使令牌“刷新”比现在更早发生?或者我还能做什么

用于在需要时上传的代码

 using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
 {
        VideosResource.InsertMediaUpload videosInsertRequest =
            youtubeService.Videos.Insert(video, parts, fileStream, "video/*");
        videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged;
        videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;

        await videosInsertRequest.UploadAsync();
 }
谢谢你的帮助

PS:我实际上尝试使用可恢复上传来继续它,但我仍然无法让它工作,但我想这是另一个问题的答案