C# YouTube分析API
我是谷歌API的新手,希望开始使用YouTube分析API生成报告。我在谷歌开发者控制台中创建了项目。当我单击凭据时,有两个选项-OAuth和公共API访问。我无法理解我应该使用哪种方式访问OAuth或公共API访问。对于OAuth,在创建新客户端id有三个选项-Web应用程序、服务帐户和已安装的应用程序,所以这里也推荐使用哪种方式?请帮助我了解这一点C# YouTube分析API,c#,youtube-api,C#,Youtube Api,我是谷歌API的新手,希望开始使用YouTube分析API生成报告。我在谷歌开发者控制台中创建了项目。当我单击凭据时,有两个选项-OAuth和公共API访问。我无法理解我应该使用哪种方式访问OAuth或公共API访问。对于OAuth,在创建新客户端id有三个选项-Web应用程序、服务帐户和已安装的应用程序,所以这里也推荐使用哪种方式?请帮助我了解这一点 注意:我们的要求是使用YouTube Analytics API在我们的客户频道上为上传的视频生成报告。对于私人用户数据,OAuth 2.0是分
注意:我们的要求是使用YouTube Analytics API在我们的客户频道上为上传的视频生成报告。对于私人用户数据,OAuth 2.0是分析API的推荐授权方法。如果您正在收集和存储要在您的终端上使用的数据,那么您很可能希望采用服务器端应用程序方法 从文件中:
- 服务器端流支持能够安全存储持久信息的web应用程序
- 客户端流支持在浏览器中运行的JavaScript应用程序
- 安装的应用程序流支持安装在设备上的应用程序,如电话或计算机
编辑:要完全清楚,如果您是通过后端应用程序收集数据,请使用“服务帐户”选项生成OAuth客户端ID。但是,如果您正在通过web/已安装的应用程序与API报告交互,则应选择“web/已安装的应用程序”。我希望这是有帮助的和明确的。从开发者控制台创建一个项目后,您可以尝试遵循(法语),在底部有完整的功能,用于报告来自Youtube API分析的所有内容 下面是从Youtube API和Youtube analytics API获取数据的函数 别忘了将客户端\u secrets.json添加到\bin\Debug\netcoreapp3.1中
public async void FetchYoutubeAnalyticsAPI()
{
UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { YouTubeService.Scope.YoutubeReadonly },
"user",
CancellationToken.None
);
}
var youTubeAnalyticsService = new YouTubeAnalyticsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});
var request = youTubeAnalyticsService.Reports.Query();
request.StartDate = ("2019-01-01");
request.EndDate = ("2020-09-30");
request.Ids = ("channel==UCmLQ3sdAd6CypJIne5ZANaA");
request.Metrics = ("views,comments,likes,dislikes,estimatedMinutesWatched,averageViewDuration");
QueryResponse requestquery = request.Execute();
List<int> myChannelDataList = new List<int>();
int listsize = 0;
foreach (object obj in requestquery.Rows[0])
{
int value = Convert.ToInt32(obj);
myChannelDataList.Add(value);
/* Debug.WriteLine("Value : " + value);
Debug.WriteLine("LISTE / " + myChannelDataList[0]);
Debug.WriteLine("Count : " + myChannelDataList.Count);*/
listsize = myChannelDataList.Count;
}
List<string> metrics = new List<string> { "Vues", "Commentaires", "Likes", "Dislike", "Minutes", "MoyenneTemps" };
for (int i = 0; i < listsize; i++)
{
Label labels = new Label();
labels.Top = (i + 4) * 20;
labels.Left = 100;
labels.AutoSize = true;
labels.TextAlign = ContentAlignment.MiddleLeft;
labels.Text = metrics[i] + " :" + myChannelDataList[i].ToString();
this.Controls.Add(labels);
}
// https://developers.google.com/youtube/v3/docs/channels/list
var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});
var requestSub = youtubeService.Channels.List("statistics");
requestSub.Mine = (true);
ChannelListResponse responsesub = requestSub.Execute();
foreach (var sresults in responsesub.Items)
{
var substats = sresults.Statistics;
var subcount = substats.SubscriberCount;
var viewCount = substats.ViewCount;
var videoCount = substats.VideoCount;
var commentsCount = substats.CommentCount;
Debug.WriteLine("SubCount : " + subcount);
Label labels = new Label();
labels.Top = 16;
labels.Left = 280;
labels.AutoSize = true;
labels.TextAlign = ContentAlignment.MiddleLeft;
labels.Text = "Subs :" + subcount;
this.Controls.Add(labels);
}
}
public异步void FetchYoutubeAnalyticsAPI()
{
用户凭证;
使用(var stream=newfilestream(“client_secrets.json”、FileMode.Open、FileAccess.Read))
{
凭证=等待GoogleWebAuthorizationBroker.AuthorizationAsync(
GoogleClientSecrets.Load(stream.Secrets),
新[]{YouTubeService.Scope.YoutubeReadonly},
“用户”,
取消令牌。无
);
}
var youtubeeanalyticsservice=new youtubeeanalyticsservice(new BaseClientService.Initializer()
{
HttpClientInitializer=凭证,
ApplicationName=Assembly.GetExecutionGassembly().GetName().Name
});
var request=youtubeanalyticservice.Reports.Query();
请求开始日期=(“2019-01-01”);
request.EndDate=(“2020-09-30”);
id=(“通道==UCmLQ3sdAd6CypJIne5ZANaA”);
request.Metrics=(“视图、评论、喜欢、不喜欢、estimatedMinutesWatched、averageViewDuration”);
QueryResponse requestquery=request.Execute();
List myChannelDataList=新列表();
int listsize=0;
foreach(requestquery.Rows[0]中的对象obj)
{
int值=转换为32(obj);
myChannelDataList.Add(值);
/*Debug.WriteLine(“值:”+Value);
Debug.WriteLine(“LISTE/”+myChannelDataList[0]);
Debug.WriteLine(“Count:+myChannelDataList.Count”)*/
listsize=myChannelDataList.Count;
}
列表指标=新列表{“VUE”、“评论”、“喜欢”、“不喜欢”、“分钟数”、“MoyenneTemps”};
for(int i=0;i
嘿,有人能帮我解决上面提到的问题吗?我不明白:你说的是“如果你在收集数据,我就不知道了。”