首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用预先存在的访问令牌通过ASP.NET创建YouTube服务

使用预先存在的访问令牌通过ASP.NET创建YouTube服务
EN

Stack Overflow用户
提问于 2015-04-29 05:28:53
回答 1查看 1.2K关注 0票数 19

我一直在做一个网站,让用户将视频上传到一个共享的YouTube账户,以便以后访问。经过大量的工作,我已经能够得到一个活动的令牌,和可行的刷新令牌。

但是,初始化YouTubeService对象的代码如下所示:

代码语言:javascript
复制
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上传视频,以及我可以在代码中使用的示例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-10 22:49:05

注意:为了访问google库,我最终将Framework升级到了4.5。

要以编程方式初始化UserCredential对象,您必须构建一个流和TokenResponse。流需要一个作用域(也就是我们为凭证寻找的权限)。

代码语言:javascript
复制
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);

希望这能有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29930271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档