where can i find ServiceAccountCredential

2019-01-26 10:35发布

I am working in google api with asp.net c#, My goal is access google api using service account.

I have imported all needed dlls to create service account to access admin features(admin sdk).

But i couldn't find ServiceAccountCredential.

How can i implement this in my project?

3条回答
Luminary・发光体
2楼-- · 2019-01-26 10:35

I am using Xamarin Studio and I have an NUnit test library project (PCL) working on my Mac using ServiceAccountCredential. I just tried to move it to an Android test project (MonoDroid), and ServiceAccountCredential does not exist. ServiceAccount does exist (its ancestral class). So this problem may be related to the compile target, and ServiceAccountCredential not being implemented for your target.

查看更多
Emotional °昔
3楼-- · 2019-01-26 10:43

ServiceAccountCredential is part of Google.Apis.Auth.OAuth2

Simple example using 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",
            });


        }
    }
}
查看更多
闹够了就滚
4楼-- · 2019-01-26 11:00

Here's how you do it in 2017:

  • Go to the Service Accounts page
  • Create a private key for the service account as a JSON file
  • 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

    using (var stream = new FileStream("key.json", FileMode.Open, FileAccess.Read))
    {
        var credential = GoogleCredential.FromStream(stream)
                                         .CreateScoped(scopes)
                                         .UnderlyingCredential as ServiceAccountCredential;
    
        //profit
    }
    
查看更多
登录 后发表回答