简体   繁体   中英

where can i find ServiceAccountCredential

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?

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 }

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


        }
    }
}

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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