我正在使用ASP.NET C#开发Google API,我的目标是使用服务账户访问Google API。
我已经导入了所有必需的dll,以创建服务账户来访问管理功能(管理员SDK)。
但我找不到ServiceAccountCredential。
我该如何在我的项目中实现这一点?
我正在使用ASP.NET C#开发Google API,我的目标是使用服务账户访问Google API。
我已经导入了所有必需的dll,以创建服务账户来访问管理功能(管理员SDK)。
但我找不到ServiceAccountCredential。
我该如何在我的项目中实现这一点?
以下是2017年的操作方法:
进入服务帐户页面
为服务帐户创建JSON格式的私钥文件
将下载的文件放入项目中(用于开发)或在构建过程中加入
在代码中引用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是Google.Apis.Auth.OAuth2的一部分。
使用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",
});
}
}
}
我正在使用Xamarin Studio,我有一个NUnit测试库项目(PCL)在我的Mac上使用ServiceAccountCredential。我刚试图将它移动到一个Android测试项目(MonoDroid)中,但是ServiceAccountCredential不存在。ServiceAccount存在(它的祖先类)。因此,这个问题可能与编译目标有关,并且ServiceAccountCredential没有为您的目标实现。