【问题标题】:Oauth 2.0 for Fusion Tables API in .NET.NET 中用于融合表 API 的 Oauth 2.0
【发布时间】:2017-02-06 01:01:15
【问题描述】:

为了自动更新 Google Fusion Table,我们创建了一个 .NET 控制台应用程序,我们已将从 Google 管理控制台生成和下载的文件 clientsecrets.json 附加到该应用程序。

当我在本地运行应用程序时,会打开一个浏览器窗口以授权将 API 与 OAuth 2.0 一起使用。一旦它授权该过程正确执行。

但是,当我们在要安排您的日常执行的服务器上运行应用程序时,不会打开浏览器窗口并显示“发生一个或多个错误”。

服务器为Windows Server 2012,应用构建于.NET 4.5.1,授权代码如下:

...

var service = new FusiontablesService(new BaseClientService.Initializer
{
    ApplicationName = "Fusion Tables Sample",
    HttpClientInitializer = Utils.Google.GetCredential().Result
});

...

public static async Task<UserCredential> GetCredential()
{
    using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
    {
        return await GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                new[] { FusiontablesService.Scope.Fusiontables },
                "XXXXXXXXXXXX[user]", CancellationToken.None);
    }
}

【问题讨论】:

  • 这只是一种预感,但您是否尝试过HttpClientInitializer = await Utils.Google.GetCredential() 而不是强制它同步运行?这是一个常见的异常来源。虽然它在本地运行良好,但您可能需要检查一下。
  • 确保您在服务器上运行的任何用户都有权访问 %appData% 默认文件数据存储区将把凭据放在那里,除非您另有说明。
  • 我的 FileDatastore 教程可能会有所帮助 daimto.com/google-net-filedatastore-demystified

标签: c# oauth-2.0 google-api google-fusion-tables windows-server-2012-r2


【解决方案1】:

您似乎需要一个服务帐户,该帐户可以从 Google“IAM 和管理控制台:https://console.cloud.google.com/iam-admin/serviceaccounts”创建。服务帐户创建后,将其私钥保存在本地(最好是 JSON-文件),然后根据从该文件获得的凭据创建 BaseClientService.Initializer。类似于:

var scopes = new[] { FusiontablesService.Scope.Fusiontables };
using (var stream = new FileStream(keyFilePath, FileMode.Open, FileAccess.Read))
 {
 return GoogleCredential.FromStream(stream)
 .CreateScoped(scopes);
 }

有了这样的 Initializer,只需像你一样创建 FusiontablesService 的实例:

        service = new FusiontablesService(
            new BaseClientService.Initializer()
            {
                HttpClientInitializer = creds,
                ApplicationName = "Street Parking",
            });

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 2013-06-18
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2012-02-16
    相关资源
    最近更新 更多