1

我正在开发一项需要授权服务器才能连接到 Google 地图引擎的服务。

https://developers.google.com/maps-engine/documentation/oauth/serviceaccounthttps://developers.google.com/api-client-library/dotnet/guide/aaa_oauth?hl=en#service_account解释了如何做这个。

但是,在 Google API 中。NET,还没有 Google Maps Engine API 的服务类,那么我想参与库的部分流程,因为我不想做所有管理 JWT 的艰苦工作。

我认为是这样的:

var certificate = new X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
    new ServiceAccountCredential.Initializer(serviceAccountEmail)
    {
        Scopes = new[] { "https://www.googleapis.com/auth/mapsengine" }
    }.FromCertificate(certificate));

var request = (HttpWebRequest)WebRequest.Create("https://www.googleapis.com/mapsengine/v1/projects");
credential.ApplyAuthenticationToRequest(request);

我想使用纯 HttpWebRequest,但是使用证书。

有人可以帮助我吗?

亚历克斯

4

1 回答 1

1

我会建议您执行以下操作:

  1. 首先使用Microsoft.Net.Http包。Google.Apis 依赖于它,因此您已经安装了它。

  2. 尝试使用以下代码:

// Create HTTP client using ConfigurableMessageHandler.
// More details available in:
http://contrib.google-api-dotnet-client.googlecode.com/hg/1.8.0-rc/documentation/classGoogle_1_1Apis_1_1Http_1_1ConfigurableMessageHandler.html.
var httpClient = new HttpClientFactory().CreateHttpClient(new CreateHttpClientArgs
    {
        ApplicationName = "YOUR_APP_NAME",
    });
// Add your credential as interceptor.
httpClient.MessageHandler.ExecuteInterceptors.Add(credential);
// Create the request.
var response = await httpClient.GetAsync(
    "https://www.googleapis.com/mapsengine/v1/projects");

我没有测试它,但它应该为你带来魔力:)

于 2014-03-10T13:57:23.793 回答