要自動更新Google Fusion Table,我們創建了一個.NET控制檯應用程序,我們在其中附加了從Google管理控制檯生成並下載的文件clientsecrets.json。Oauth 2.0適用於.NET中的Fusion Tables API
當我在本地運行應用程序時,會打開一個瀏覽器窗口來授權將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 =等待的Utils.Google.GetCredential()'而不是強迫它同步運行?這是一個常見的例外情況。雖然它在本地運行良好,但您可能需要檢查它。 –
確保你在服務器上運行的用戶有權訪問%appData%default filedatastore將要把證書放在那裏,除非你另有說明。 – DaImTo
我的FileDatastore教程可能有助於http://www.daimto.com/google-net-filedatastore-demystified/ – DaImTo