使用api v3.0获取YouTube视频的评论主题

时间:2015-06-17 09:23:46

标签: c# youtube youtube-api youtube-data-api

我尝试使用.net YouTube API v.3.0来检索评论主题。我基本上试图重用sample for Java,但是当我尝试使用我的客户端机密进行授权时,我没有使用我的令牌获取任何作用域(当我检查凭证变量时它被设置为null)。这是我从.net示例中获取的代码:

credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
    GoogleClientSecrets.Load(stream).Secrets,
    new[] { YouTubeService.Scope.YoutubeForceSsl},
    "user",
    CancellationToken.None,
    new FileDataStore(this.GetType().ToString())
);

我可以列出我上传的所有视频,但我无法使用以下代码获取评论主题:

var req = youtubeService.CommentThreads.List("snippet");
req.VideoId = playlistItem.Snippet.ResourceId.VideoId;
req.TextFormat = CommentThreadsResource.ListRequest.TextFormatEnum.PlainText;
var res = req.Execute();

" youtubeService"已通过传递"凭证"先前创建的变量。任何人都可以通过.net获得评论更幸运。

1 个答案:

答案 0 :(得分:3)

Repro步骤:我不得不睡着了解决这个问题 - 事实证明我多次对应用进行了更改,最初我只是要求阅读播放列表(就像这样例如:Retrieve my uploads)。因此,我授权范围:

YouTubeService.Scope.YoutubeReadonly

这个范围显然不足以读取CommentThreads,但是当我更改范围时,应用程序保留了相同的授权令牌并将其用于我的所有请求(范围设置为只读)。

我为解决此问题所做的工作:我从我的应用代码中撤消了令牌并再次授权。这一次,因为没有缓存令牌,所以出现了一个同意窗口,其范围为"管理您的帐户" (在它之前是#34;只读访问"),这次我能够获得具有适当范围的令牌。

撤销令牌的代码:

await credential.RevokeTokenAsync(CancellationToken.None);

期望:我原以为是因为我更改了代码中的范围,所以同意窗口将再次出现而无需撤消令牌,因为我的缓存令牌具有较低/不同的范围。

摘要:问题(错误或设计?)是,一旦您在应用中获得令牌并希望更改范围(更强大的范围),您实际上需要撤销令牌和再次授权,否则您将最终获得具有初始范围的相同令牌,即使它已在代码中更改。