Youtube Live API -拒绝使用OAuth进行广播
本文关键字:OAuth 广播 Live API 拒绝 Youtube | 更新日期: 2023-09-27 18:06:16
我正在尝试使用Youtube.Data.Api v3从我的。net应用程序直播。我已经设置了OAuth并下载了. json文件,并且运行良好。我知道这一点,因为我已经成功获得了一份渠道列表。视频在我的帐户,即以下代码工作:
var channelsRequest = ytService.Channels.List("contentDetails, snippet");
channelsRequest.Mine = true;
var channelsListResponse = channelsRequest.Execute();
但是如果我尝试执行插入请求(为了完整,我会向您展示整个方法),
public static LiveBroadcast CreateImmediateBroadcast(string title = "DefaultBroadcast") {
var snippet = new LiveBroadcastSnippet();
snippet.Title = title;
snippet.ScheduledStartTime = DateTime.Now;
snippet.ScheduledEndTime = DateTime.Now + TimeSpan.FromMinutes(60);
var status = new LiveBroadcastStatus();
status.PrivacyStatus = "unlisted";
var broadcast = new LiveBroadcast();
broadcast.Kind = "youtube#liveBroadcast";
broadcast.Snippet = snippet;
broadcast.Status = status;
var insertBroadcastRequest = ytService.LiveBroadcasts.Insert(broadcast, "snippet, status");
insertBroadcastRequest.Execute();
return broadcast;
}
我在调用insertBroadcastRequest.Execute()
时得到一个异常,即:
谷歌。GoogleApiException未处理
HResult = -2146233088消息= Google.Apis.Requests.RequestError
权限不足[403]错误(消息[权限不足]位置[-]原因[insufficientPermissions]域[global]]名= youtube
=谷歌来源。api
加:在C:'Users'cloudsharp'Documents'GitHub'google-api-dotnet-client'Src'Support'GoogleApis'Apis'Requests'ClientServiceRequest.cs:第96行中执行(在YoutubeConsole.YouTubeAPI。CreateImmediateStream(字符串标题)在c:' users ' busgs ' source ' workspaces ' owexperiment 'YoutubeConsole'YoutubeConsole'YouTubeAPI.cs:第87行在youtubecconsole . youtubeapi . test ()…
同时,为了完整起见,这里是我的授权,
using (var stream = new FileStream(Directory.GetCurrentDirectory() + @"'GoogleAuthOtherApplication.json", FileMode.Open, FileAccess.Read)) {
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { YouTubeService.Scope.YoutubeForceSsl},
"user",
CancellationToken.None,
new FileDataStore("YouTubeAPI")
).Result;
}
此外,对于YouTubeService.Scope
,我已经尝试了所有选项。insert
法应根据ForceSsl
法的说明书进行处理。
这个文档页也说
注意:频道必须经过批准才能使用YouTube Live功能,该功能使频道所有者能够将直播内容流式传输到该频道。如果您代表一个通道未启用或没有资格流直播内容的已验证用户发送API请求,API将返回insufficientPermissions错误。
但是我所有的频道都可以上Youtube Live。有什么办法让它工作吗?
Ok,我们通过电子邮件进行了一些测试。
-
你需要有正确的作用域"YouTubeService.Scope"。YoutubeForceSsl"通过改变"用户",我们迫使它再次请求权限。关于文件数据存储如何在Google .net客户端库中工作的教程
-
通过发送"snippet,status"来删除空格"snippet,status",这对我有效。