简体   繁体   English

在哪里可以找到 ServiceAccountCredential

[英]where can i find ServiceAccountCredential

I am working in google api with asp.net c#, My goal is access google api using service account.我正在使用 asp.net c# 在 google api 中工作,我的目标是使用服务帐户访问 google api。

I have imported all needed dlls to create service account to access admin features(admin sdk).我已经导入了所有需要的 dll 来创建服务帐户来访问管理功能(管理 sdk)。

But i couldn't find ServiceAccountCredential.但我找不到 ServiceAccountCredential。

How can i implement this in my project?我如何在我的项目中实现这一点?

Here's how you do it in 2017:以下是您在 2017 年的做法:

  • Go to the Service Accounts page转到服务帐户页面

  • Create a private key for the service account as a JSON file为服务帐号创建一个私钥作为 JSON 文件

  • Put the downloaded file in your project (for development) or bake it in your build process将下载的文件放在您的项目中(用于开发)或在您的构建过程中烘焙它

  • Reference the Google.Apis.Auth package in your code在您的代码中引用Google.Apis.Auth

     using (var stream = new FileStream("key.json", FileMode.Open, FileAccess.Read)) { var credential = GoogleCredential.FromStream(stream) .CreateScoped(scopes) .UnderlyingCredential as ServiceAccountCredential; //profit }

ServiceAccountCredential is part of Google.Apis.Auth.OAuth2 ServiceAccountCredential是 Google.Apis.Auth.OAuth2 的一部分

Simple example using BigQuery:使用 BigQuery 的简单示例:

using System;
using Google.Apis.Auth.OAuth2;
using System.Security.Cryptography.X509Certificates;
using Google.Apis.Bigquery.v2;
using Google.Apis.Services;

//Install-Package Google.Apis.Bigquery.v2
namespace GoogleBigQueryServiceAccount
{
    class Program
    {

        static void Main(string[] args)
        {

            Console.WriteLine("BigQuery API - Service Account");
            Console.WriteLine("==========================");

            String serviceAccountEmail = "539621478854-imkdv94bgujcom228h3ea33kmkoefhil@developer.gserviceaccount.com";

            var certificate = new X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.Exportable);

            ServiceAccountCredential credential = new ServiceAccountCredential(
               new ServiceAccountCredential.Initializer(serviceAccountEmail)
               {
                   Scopes = new[] { BigqueryService.Scope.DevstorageReadOnly }
               }.FromCertificate(certificate));

            // Create the service.
            var service = new BigqueryService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "BigQuery API Sample",
            });


        }
    }
}

I am using Xamarin Studio and I have an NUnit test library project (PCL) working on my Mac using ServiceAccountCredential.我正在使用 Xamarin Studio,并且有一个 NUnit 测试库项目 (PCL) 使用 ServiceAccountCredential 在我的 Mac 上运行。 I just tried to move it to an Android test project (MonoDroid), and ServiceAccountCredential does not exist.我只是尝试将其移动到Android测试项目(MonoDroid),并且ServiceAccountCredential不存在。 ServiceAccount does exist (its ancestral class). ServiceAccount 确实存在(它的祖先类)。 So this problem may be related to the compile target, and ServiceAccountCredential not being implemented for your target.所以这个问题可能与编译目标有关,并且没有为您的目标实现 ServiceAccountCredential。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM