C# 谷歌协调API离线认证

C# 谷歌协调API离线认证,c#,.net,google-api,google-oauth,google-api-dotnet-client,C#,.net,Google Api,Google Oauth,Google Api Dotnet Client,正在尝试验证Google坐标api。尝试使用服务帐户进行服务帐户身份验证,并发布了堆栈流,但有问题。找到答案,很好地描述了我的问题 现在的问题是该库已被弃用。无法执行上述解决方案 var auth = new OAuth2Authenticator<WebServerClient> (provider, GetAuthorization); // Create the service. var service = new CoordinateSe

正在尝试验证Google坐标api。尝试使用服务帐户进行服务帐户身份验证,并发布了堆栈流,但有问题。找到答案,很好地描述了我的问题

现在的问题是该库已被弃用。无法执行上述解决方案

var auth = new OAuth2Authenticator<WebServerClient> (provider, GetAuthorization); 

        // Create the service. 
        var service = new CoordinateService(new BaseClientService.Initializer()
                   {
                      Authenticator = auth
                   });

但是这种方法第一次需要重定向。在我的场景中我不能这么做。所以需要一个离线解决方案。

看起来您使用的是一个非常旧的库版本(pre-GA)

我建议您下载最新的坐标API,该API在NuGet-中提供

然后,按照和页面进行操作。您应该在那里找到所有正确的文档,如果缺少什么,请告诉我们。在我们的问题跟踪器中。

首先需要使用浏览器实例进行身份验证,并且可以对所有其他请求重复使用相同的“刷新令牌”。我们可以提供一个自定义文件夹位置来存储“auth令牌”,库将使用该文件夹中存储的令牌。已修改的源代码粘贴在下面:

using (var stream = new FileStream(@"client_secret.json", FileMode.Open, FileAccess.Read))

{
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets,
    new[] { CoordinateService.Scope.Coordinate },
    "user", CancellationToken.None,new FileDataStore(folder));
}

MG

我已经用最新代码更新了我的问题。。请看一看,我没有看到您对service.Location.List(…)对象调用了Execute方法,为什么?第二件事-看起来您需要一个服务帐户解决方案-请参阅本文档-服务帐户不能与Coordinate API一起使用。[这是因为Coordinate API要求经过身份验证的API用户拥有Coordinate许可证,但无法将Coordinate许可证附加到服务帐户]我需要的是从新版本的GA中获取代码示例,以便运行此处所述的解决方案OK。。抱歉:(因此您必须进行一次用户身份验证,然后重新使用刷新令牌以保持您的访问令牌刷新且有效(库将为您处理此问题)
using (var stream = new FileStream(@"client_secret.json", FileMode.Open, FileAccess.Read))

{
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets,
    new[] { CoordinateService.Scope.Coordinate },
    "user", CancellationToken.None,new FileDataStore(folder));
}