我一直在做一个网站,让用户将视频上传到一个共享的YouTube账户,以便以后访问。经过大量的工作,我已经能够得到一个活动的令牌,和可行的刷新令牌。
但是,初始化YouTubeService
对象的代码如下所示:
UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
// This OAuth 2.0 access scope allows an application to upload files to the
// authenticated user's YouTube channel, but doesn't allow other types of access.
new[] { YouTubeService.Scope.YoutubeUpload },
"user",
CancellationToken.None
);
}
var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name,
});
我已经有一个令牌了,我想用我的。我使用的是ASP.NET版本3.5,所以无论如何我都不能进行async
调用。
有没有办法在不调用async
的情况下,使用我自己的令牌来创建YouTubeService
对象?有没有一种方法可以在没有授权代理的情况下构建凭据对象?
或者,应用程序使用YouTube应用程序接口V2已经有很长一段时间了,它有一个接受令牌的表单,并对在V2应用程序接口中与令牌一起生成的YouTube URI执行post操作。有没有一种方法可以用V3实现呢?有没有一种方法可以使用Javascript上传视频,以及我可以在代码中使用的示例?
发布于 2017-05-10 22:49:05
注意:为了访问google库,我最终将Framework升级到了4.5。
要以编程方式初始化UserCredential对象,您必须构建一个流和TokenResponse。流需要一个作用域(也就是我们为凭证寻找的权限)。
using Google.Apis.Auth.OAuth2;
using Google.Apis.Auth.OAuth2.Responses;
using Google.Apis.Auth.OAuth2.Flows;
string[] scopes = new string[] {
YouTubeService.Scope.Youtube,
YouTubeService.Scope.YoutubeUpload
};
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = new ClientSecrets
{
ClientId = XXXXXXXXXX, <- Put your own values here
ClientSecret = XXXXXXXXXX <- Put your own values here
},
Scopes = scopes,
DataStore = new FileDataStore("Store")
});
TokenResponse token = new TokenResponse {
AccessToken = lblActiveToken.Text,
RefreshToken = lblRefreshToken.Text
};
UserCredential credential = new UserCredential(flow, Environment.UserName, token);
希望这能有所帮助。
https://stackoverflow.com/questions/29930271
复制相似问题