Youtube API v3:使用服务帐户访问 youtube 视频

Posted

技术标签:

【中文标题】Youtube API v3:使用服务帐户访问 youtube 视频【英文标题】:Youtube API v3 : access youtube videos using service account 【发布时间】:2019-01-11 21:08:50 【问题描述】:

我正在尝试使用 Google 服务帐户在 .NET 中列出来自 YouTube Data API v3 的视频。我已经激活了 YouTube API,创建了帐户服务,但是每当我尝试列出我频道中的视频时,即使我确实上传了视频,它也会显示 0 个视频。能否请你帮忙 ?谢谢。

这里是代码-

string[] scopes = new string[] 
    
    YouTubeAnalyticsService.Scope.YtAnalyticsReadonly, 
    YouTubeAnalyticsService.Scope.YtAnalyticsMonetaryReadonly, 
    "https://www.googleapis.com/auth/youtube.force-ssl" 
;

// service account credential
GoogleCredential credential = GoogleCredential.FromFile(SecretPath).CreateScoped(scopes);

var youtubeService = new YouTubeService(new BaseClientService.Initializer()

    HttpClientInitializer = credential,
    ApplicationName = channelinfo.AnalyticsAPIFileDataStore
);

Dictionary<string, DateTime?> videoIds = new Dictionary<string, DateTime?>();

var channelResourcesList = youtubeService.Channels.List("contentDetails");
channelResourcesList.Id = channelinfo.ChannelId;
var listResult = channelResourcesList.Execute();
string playListId = listResult.Items[0]?.ContentDetails.RelatedPlaylists.Uploads;

var listOfVideos = youtubeService.PlaylistItems.List("snippet");

listOfVideos.PlaylistId = playListId;
var nextPageToken = "";

while (nextPageToken != null)

    listOfVideos.MaxResults = 50;
    listOfVideos.PageToken = nextPageToken;

    // searchresult is empty (listOfVideos.Execute() returns empty result) although channelResourcesList.Execute() worked
    var searchListResult = listOfVideos.Execute();
    nextPageToken = searchListResult.NextPageToken;

【问题讨论】:

感谢您调查此问题。我已经更新了代码。 AFAIK,Youtube API 不支持服务帐户,因为它未与任何 YouTube 频道相关联,您无法将新的或现有频道与服务帐户相关联。 在 youtube API wiki - developers.google.com/youtube/registering_an_application 中提到“您可以为 Web 应用程序、服务帐户或已安装的应用程序生成 OAuth 2.0 凭据。” 【参考方案1】:

YouTube API 不支持服务帐户身份验证。

如果您发现链接的页面没有说明如何设置服务帐户,那么您链接的页面就会出现错误,因为这很可能是生成的文档。我很幸运地联系了团队,他们会修复它,以免其他开发人员感到困惑。

您将需要使用 Oauth2 并至少对您的用户进行一次身份验证,然后保存刷新令牌,以便在您需要访问 API 时请求新的访问令牌。

【讨论】:

以上是关于Youtube API v3:使用服务帐户访问 youtube 视频的主要内容,如果未能解决你的问题,请参考以下文章

Youtube V3 API 配额使用协助

使用 YouTube API v3 将视频上传到特定的 PREDETERMINED 帐户

YouTube Data API v3:无需打开浏览器即可从服务器上传视频

未经用户同意使用 youtube Data API V3 将视频自动上传到我的帐户

YouTube Data API v3 在生产服务器上部署时不起作用 [关闭]

如何通过 Google Drive .NET API v3 使用服务帐户访问 Team Drive