where can i find ServiceAccountCredential

本秂侑毒 提交于 2019-11-28 03:26:15

问题


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?


回答1:


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
    }
    



回答2:


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


        }
    }
}



回答3:


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.



来源:https://stackoverflow.com/questions/23883379/where-can-i-find-serviceaccountcredential

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!