c# – Google Oauth错误:应至少设置一个客户机密码(已安装或Web)

我使用Google的Oauth 2.0,通过我们的服务器将视频上传到Youtube.
我的客户端ID是一个“服务帐户”.我下载了json密钥并将其添加到我的解决方案中.

以下是相关代码

private async Task Run(string filePath)
        {
            UserCredential credential;
            var keyUrl = System.Web.HttpContext.Current.Server.MapPath("~/content/oauth_key.json");
            using (var stream = new FileStream(keyUrl,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
            });

当我运行它,我得到这个错误:至少应该设置一个客户端秘密(已安装或Web).

但是,在我的json里,没有“客户秘密”:

{
  "private_key_id": "9d98c06b3e730070806dcf8227578efd0ba9989b","private_key": "-----BEGIN PRIVATE KEY-----\nMIICdQIBADANBgkqhk etc,"client_email": "546239405652-8igo05a5m8cutggehk3rk3hspjfm3t04@developer.gserviceaccount.com","client_id": "546239405652-8igo05a5m8cutggehk3rk3hspjfm3t04.apps.googleusercontent.com","type": "service_account"
}

所以我假设我忽略了一些东西.
也许我不能使用“服务帐户”?不知道…

解决方法

不是C#上的专家,但是您似乎试图使用服务帐户来执行OAuth2 Web服务器流程,这不应该起作用.
你可能想要使用 ServiceAccountCredential.
有关不同Google OAuth2流程的更多信息,请参阅 web server,service account等文档.

相关文章

C#项目进行IIS部署过程中报错及其一般解决方案_c#iis执行语句...
微信扫码登录PC端网站应用的案例(C#)_c# 微信扫码登录
原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...