2016-04-07 6 views
0

Ich muss ein Zugriffstoken für ein Google-Dienstkonto abrufen. Anschließend verwende ich das Token, um die Ergebnisse von Google Analytics zu erhalten. Ich habe es bereits in PHP gemacht, aber ich kämpfe mit .NET, ich habe ein Beispiel aus der Google Docs verwendet, aber ich habe ein paar Probleme. Dies ist der Code:So rufen Sie das Token für den Zugriff auf das Google-Dienstkonto ab

 private static String ACTIVITY_ID = "1111111"; 

     public static void Test() 
     { 
      Console.WriteLine("Plus API - Service Account"); 
      Console.WriteLine("=========================="); 

      String serviceAccountEmail = "*@developer.gserviceaccount.com"; 
      var certificate = new X509Certificate2(System.Web.Hosting.HostingEnvironment.MapPath("~/*.p12"), "notasecret", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet); 

      ServiceAccountCredential credential = new ServiceAccountCredential(
       new ServiceAccountCredential.Initializer(serviceAccountEmail) 
       { 
        Scopes = new[] { PlusService.Scope.PlusMe } 
       }.FromCertificate(certificate)); 

      // Create the service. 

      var service = new PlusService(new BaseClientService.Initializer() 
      { 
       HttpClientInitializer = credential, 
       ApplicationName = "Plus API Sample", 
      }); 

      Activity activity = service.Activities.Get(ACTIVITY_ID).Execute(); 

      Console.WriteLine("Press any key to continue..."); 
      Console.ReadKey(); 

      Console.WriteLine("Press any key to continue..."); 
      Console.ReadKey(); 
     } 
    } 
} 

Es ist auf der Linie abstürzt:

Activity activity = service.Activities.Get(ACTIVITY_ID).Execute(); 

Mit dem folgenden Fehler:

Google.Apis.Requests.RequestError 
Not Found [404] 
Errors [ 
    Message[Not Found] Location[ - ] Reason[notFound] Domain[global] 
] 

Was soll ich fehlen oder falsch zu machen, um das Token zu erhalten ? und auch, ist die ACTIVITY_ID die ID aus der Ansicht in Analytics oder etwas anderes?

Antwort

1

Es könnte etwa die gleichen wie this Problem sein, müssen Sie die User Eigenschaft setzen:

var xCred = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(cr.client_email) 
      { 
       Scopes = new[] { "https://www.googleapis.com/somescope" }, 
       User = "[email protected]" 
      }.FromPrivateKey(cr.private_key)); 
+0

Heilige Scheiße, Mann ... Ich habe für zwei Tage für den Benutzer Teil der Antwort gesucht . Wenn du willst, poste dies als Antwort auf meine ähnliche vb.net Frage und ich gebe dir das Kopfgeld dazu. – SEFL

+0

@SEFL Wenn [dieses] (http://stackoverflow.com/q/40683953/465942) Ihr Problem ist, denke ich, dass es anders ist? Will versuchen, es für Sie zu beantworten :) –

+0

Es ist das Problem ... und die Benutzereigenschaft hat es für mich beantwortet. – SEFL

Verwandte Themen