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?
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",
});
}
}
}
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
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With