Google-API-OAuth2 -, Service-Konto, "error" : "invalid_grant"

Ich versuche zur Nutzung von service-Konto synchronisieren von Kalendern aus Dynamics CRM-software von Google.
Während dieser stellte ich mich der Mangel der Dokumentation auf der google-API .net, vor allem hinsichtlich der Berechtigung. Die meisten Google-samples können nicht selbst kompiliert, weil auf veraltete Bibliotheken und Klassen verwendet.

So fand ich einige Beispiel über ein Praktikum und die Fehlermeldung. Könnte jemand bitte ein Blick auf mein Beispiel und sagen, was mache ich falsch?

Vorbereitende Schritte:

  1. Erstellte ich ein Projekt in meinem privaten Google-Konto.
  2. In project developer-Konsole unter APIS & AUTH -> Anmeldeinformationen, die ich generierte Service-Konto. Dann Klick auf "Generieren P12-key" heruntergeladen und die .p12-Datei.
  3. Unter APIS & AUTH -> APIs, wieder auf "Calendar API"

Dann erstellt Konsole app und schaffte es installieren OAuth und Kalender nuget-Pakete. Es gibt:

  1. Google APIs Auth-Client-Bibliothek Von Google.Apis.Auth 1.8.1
  2. Google APIs Client Library, Google.Apis 1.8.1
  3. Google-APIs Kern-Client-Bibliothek, Id: Google.Apis.Core-1.8.1
  4. Google.APIs.Kalender.v3-Client-Bibliothek von Google.Apis.Kalender.V3 1.8.1.860

Gibt es einen code gefunden und angepasst an meine Bedürfnisse:

using System;
using System.Security.Cryptography.X509Certificates;
using Google.Apis.Calendar.v3;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;

namespace CrmToGoogleCalendar
{
    class Program
    {

        static void Connect()
        {
            var certificate = new X509Certificate2("My Project-ee7facaa2bb1.p12", "notasecret", X509KeyStorageFlags.Exportable);


            var serviceAccountEmail = "506310960175-q2k8hjl141bml57ikufinsh6n8qiu93b@developer.gserviceaccount.com";
            var userAccountEmail = "<my email>@gmail.com";
            var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail) 
                {
                    User = userAccountEmail,
                    Scopes = new[] { CalendarService.Scope.Calendar }
                }
                .FromCertificate(certificate));

            var service = new CalendarService(new BaseClientService.Initializer()
            {
                ApplicationName = "Test calendar sync app",
                HttpClientInitializer = credential

            });

            var calList = service.CalendarList.List().Execute().Items;


            foreach (var cal in calList)
            {
                Console.WriteLine(cal.Id);
            }
        }


        static void Main(string[] args)
        {
            Connect();
        }
    }
}

Die Kommunikation mit der Google API, die ich in der app und Fiddler ist:

Anfrage :

Host: HTTPS accounts.google.com URL: /o/oauth2/token
Behauptung: long binary-string
grant_type: urn:ietf:params:oauth:grant-Typ:jwt-bearer

Antwort:

HTTP/1.1 400 Bad Request Content-Type: application/json Cache-Control:
no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT Date: Thu, 24 Jul 2014 06:12:18
GMT X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block Server: GSE Alternate-Protocol:
443:quic Transfer-Encoding: chunked

1f { "error" : "invalid_grant" } 0

Google-API-OAuth2 -, Service-Konto,

Bitte um Hilfe und danke im Voraus!

Haben Sie versucht, die Antworten aus stackoverflow.com/questions/10576386/... ?
Hi @luc. Ich fand, dass nach dem öffnen den Kalender in google apps web-Seite, es begann die Antwort mit Error:"unauthorized_client", Description:"Unauthorized client or scope in request.", Uri:"". Also den gleichen code noch ein Fehler. Ich denke immer noch, oder habe ich etwas verpasst in der Konfiguration von google richtig
Ich wurde immer diese Fehlermeldung auf dem Produktions-server. Nach der Suche durch Antworten wie diese, die ich endlich herausgefunden, es lag an der system-Uhr wird ausgeschaltet. stackoverflow.com/questions/11973162/...

InformationsquelleAutor Dimitry | 2014-07-25

Schreibe einen Kommentar