问题和我尝试过的事情:
嗨!我一直无法使用v3 api上传长到YouTube的视频,这是因为Oauth令牌需要每3600秒(1小时)刷新一次。这是大文件的问题(或者在上载开始时令牌即将过期的情况下)
现在,文档说它应该在接近过期时自动刷新,但事实并非如此,经过一些测试后,我已经能够确定令牌试图刷新大约2或3分钟迟到,导致上传因未经授权的错误而停止(401)。
现在,我尝试使用一个线程来手动检查Token(在服务的Youtube使用的用户凭据中找到)是否即将到期,并在它到期前1分钟调用UserCredential.RefreshTokenAsync。这有效,它实际上及时刷新了令牌,但是......通过它的外观,类InsertMediaUpload不使用对此令牌的引用,但是它使用了一个副本,因为在调试时我可以看到它正在使用旧的令牌,即使在线程更新后,再次导致同样的错误。
我的问题:
我的问题基本上是,我该怎么办?有没有办法让我手动更新我的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 :我实际上尝试使用可恢复上传来继续播放,但我仍然无法使其正常工作,但这是我猜的另一个问题。