我正在尝试使用 YouTube API v3 ( https://developers.google.com/youtube/v3/docs/captions/download ) 和官方 .NET SDK nuget 包 ( https://www.nuget. org/packages/Google.Apis.YouTube.v3/,版本 1.9.0.1360)。
返回的流包含以下文本:
“在查询字符串中收到 OAuth 令牌,此 API 禁止 JSON 或 XML 以外的响应格式。如果可能,请尝试在授权标头中发送 OAuth 令牌。”
而不是我刚刚通过 YouTube.com UI 手动上传和验证的 SRT 纯文本内容。
我发现错误的类型:lockedDomainCreationFailure
我的代码:
...
_service = new YTApi.YouTubeService(new BaseClientService.Initializer {
ApplicationName = config.AppName,
ApiKey = config.DeveloperKey
});
...
public Stream CaptionsDownload(
string accessToken,
string trackId
)
{
var request = _service.Captions.Download(trackId);
request.OauthToken = accessToken;
request.Tfmt = YTApi.CaptionsResource.DownloadRequest.TfmtEnum.Srt;
var trackStream = new MemoryStream();
request.Download(trackStream);
trackStream.Position = 0;
return trackStream;
}
我似乎找不到在 _service.HttpClient 上设置任何标头的方法,我想我不应该手动进行。我希望DownloadRequest(或YouTubeBaseServiceRequest)会放
/// <summary>
/// OAuth 2.0 token for the current user.
/// </summary>
[RequestParameter("oauth_token", RequestParameterType.Query)]
public virtual string OauthToken { get; set; }
进入正确的授权标头。我没有在 1.9.0.1360 版本中看到这一点。
也许我忽略了什么?任何帮助是极大的赞赏。
注意:我在这个 SDK 中使用了其他与字幕相关的方法,而“下载”是我唯一遇到的问题。