本文介绍了当我尝试上传视频时,Youtube API v3 返回 401的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 youtube 上使用 ServiceAccount 上传器.我使用 Youtube API v3.我有一个简单的控制台应用程序,可以将视频上传到 youtube
I use ServiceAccount uploader for youtube. I use Youtube API v3.I have simple console application, that upload video to youtube
String serviceAccountEmail = "...";
var certificate = new X509Certificate2(@"G:\Youtube\1ffd6ea22be7c41e0852935a0f35438e4beb2e2d-privatekey.p12", "notasecret", X509KeyStorageFlags.Exportable);
//, YouTubeService.Scope.YoutubeUpload
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { YouTubeService.Scope.Youtube, YouTubeService.Scope.YoutubeUpload }
}.FromCertificate(certificate));
var youtube = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
});
var video = new Video
{
Snippet = new VideoSnippet
{
Title = "Video title",
Description = "Video description",
Tags = new string[] {"tag1", "tag2"},
CategoryId = "22"
},
Status = new VideoStatus {PrivacyStatus = "public"}
};
var fileStream = new FileStream("G:\\1.mp4", FileMode.Open);
var videosInsertRequest = youtube.Videos.Insert(video, "snippet,status", fileStream, "video/*");
videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged;
videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;
var uploadThread = new Thread(() => videosInsertRequest.Upload());
uploadThread.Start();
uploadThread.Join();
Console.Read();
但是这段代码返回错误:响应状态代码不表示成功:401(未授权).请帮帮我
But this code return error:Response status code does not indicate success: 401 (Unauthorized).Help me, please
这是 Fiddler 的结果:
This is result by Fiddler:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="https://www.google.com/accounts/AuthSubRequest", error=invalid_token
Content-Type: application/json
Content-Length: 255
Date: Sun, 10 Nov 2013 14:36:29 GMT
Server: HTTP Upload Server Built on Nov 5 2013 16:15:49 (1383696949)
Alternate-Protocol: 443:quic
{
"error": {
"errors": [
{
"domain": "youtube.header",
"reason": "youtubeSignupRequired",
"message": "Unauthorized",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Unauthorized"
}
}
推荐答案
服务帐户不适用于 YouTube API.以下是实施 OAuth2 的方法.
Service Accounts don't work with YouTube API. Here's how to implement OAuth2 instead.
这篇关于当我尝试上传视频时,Youtube API v3 返回 401的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!