使用服务帐户c#调用Google API

时间:2019-06-24 16:31:45

标签: c# youtube-data-api google-oauth2 google-api-dotnet-client service-accounts

我遇到以下问题:我创建了一个google服务帐户,现在我正尝试使用c#对Google API和YouTube Data API进行授权的API调用。这是我的示例代码:

string filePath = @"~\my-path\Default-GASvcAcct-508d097b0bff.json"

using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
    googleCredential = GoogleCredential.FromStream(stream);
}

if (googleCredential.IsCreateScopedRequired)
{
    googleCredential.CreateScoped(
        new string[] 
        {
            YouTubeService.Scope.YoutubeReadonly,
            YouTubeService.Scope.YoutubeUpload,
            YouTubeService.Scope.Youtube,
            YouTubeService.Scope.YoutubeForceSsl,
            YouTubeService.Scope.Youtubepartner,
            YouTubeService.Scope.YoutubepartnerChannelAudit
        });
}

YouTubeService service = new YouTubeService(new BaseClientService.Initializer()
{
    HttpClientInitializer = googleCredential,
});

service.Videos.List()

代码构建成功,但是当我启动程序时,出现以下错误消息:

  

System.IO.FileNotFoundException:'无法加载文件或程序集   'BouncyCastle.Crypto,版本= 1.7.4137.9688,文化=中性,   PublicKeyToken = a4292a325f69b123'或其依赖项之一。的   系统找不到指定的文件。'

有人知道如何解决此错误,并且是否可以使用服务帐户凭据向YouTube数据API发出请求?

谢谢!

1 个答案:

答案 0 :(得分:0)

更新

根据Jhon Skeet的评论,如果更新Google API nuget的内容,则将不再依赖BouncyCastle.Crypto nuget,因此这也是一个选择。

原始答案:

我不能明确证明,但似乎BouncyCastle.Crypto不适合nuget。

您会发现有nuget试图实现可移植性。

我还认为有一个预发行版版本应与.NET 4.0兼容:

Nuget Package browser