Um die Aktualisierung einer Google Fusion-Tabelle zu automatisieren, haben wir eine .NET-Konsolenanwendung erstellt, der die Datei clientsecrets.json hinzugefügt und von der Google-Administrationskonsole heruntergeladen wurde.Oauth 2.0 für Fusion Tables API in .NET
Wenn ich die Anwendung lokal ausführe, öffnet sich ein Browserfenster, um die Verwendung der API mit OAuth 2.0 zu autorisieren. Sobald es den Prozess ordnungsgemäß autorisiert hat.
Wenn wir jedoch die Anwendung auf dem Server ausführen, auf dem die tägliche Ausführung geplant werden soll, wird das Browserfenster nicht geöffnet und "Ein oder mehrere Fehler treten auf".
Der Server ist ein Windows Server 2012. Die Anwendung auf dem 4.5.1 .NET integriert ist und den Code zur Ermächtigung ist wie folgt:
...
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);
}
}
Dies ist nur eine Vermutung, aber haben Sie versucht, 'HttpClientInitializer = erwarten Utils.Google.GetCredential()', anstatt sie zu zwingen, synchron laufen? Es ist eine häufige Ausnahmequelle. Obwohl es lokal gut läuft, möchten Sie es vielleicht überprüfen. –
Stellen Sie sicher, dass jeder Benutzer, den Sie auf dem Server ausführen, Zugriff auf% appData% hat. Standard-Dateiatastore wird dort Anmeldeinformationen eingeben, wenn Sie es nicht anders angeben. – DaImTo
Mein Tutorial zu FileDatastore könnte helfen http://www.daimto.com/google-net-filedatastore-demystified/ – DaImTo