2015-10-24 11 views
10

Ich versuche, Google Analytics Embed API Server Side Berechtigung mit C# zu verwenden, wird der Code wie folgtGoogle Analytics einbinden Api Server-seitige Genehmigung C#

public ActionResult Dashboard() 
    { 
     ViewBag.Message = "Dashboard."; 
     var scopes = new string[] 
     { 
      AnalyticsService.Scope.Analytics, // view and manage your Google Analytics data 
      AnalyticsService.Scope.AnalyticsReadonly, 
      AnalyticsService.Scope.AnalyticsEdit 
     }; 
     const string serviceAccountEmail = "[email protected]ccount.com"; 
     const string keyFilePath = @"D:\key.p12"; 

     var status = RequestAccessTokenAsync(keyFilePath,scopes,serviceAccountEmail); 
     ViewBag.Token = _accessToken; 

     return View(); 
    } 

    private async Task<bool> RequestAccessTokenAsync(string certificateFile, string[] scope, string serviceAccount) 
    { 
     var certificate = new X509Certificate2(certificateFile, "notasecret", X509KeyStorageFlags.Exportable); 
     var serviceAccountCredential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccount) 
     { 
      Scopes = scope 
     }.FromCertificate(certificate)); 

     var status = await serviceAccountCredential.RequestAccessTokenAsync(CancellationToken.None); 
     if (status) 
      _accessToken = serviceAccountCredential.Token.AccessToken; 
     return status; 
    } 

eine Instanz Dienst zu machen funktioniert gut und ist auch in der Lage um die Rohdaten zu holen, aber wir müssen die Embed-API verwenden und das Problem ist, dass kein Wert in _accessToken abgerufen wird und wir brauchen, um auf die eingebettete API zugreifen zu können.

Alle Ideen/Gedanken werden hilfreich sein.

auf Google Demo-Site, sofern das Beispiel für Python ist - https://ga-dev-tools.appspot.com/embed-api/server-side-authorization/

+0

meine Frage prüfen hier: http://stackoverflow.com/questions/41905074/google-analytics -embed-api-server-side-authorization-nicht-rendering-the-charts-wi Ich hoffe, es kann Ihnen helfen. – Patrick

Antwort

2

Versuchen Sie folgendes:

public ActionResult Dashboard() 
{ 
    ViewBag.Message = "Dashboard."; 
    var scopes = new string[] 
    { 
     AnalyticsService.Scope.Analytics, // view and manage your Google Analytics data 
     AnalyticsService.Scope.AnalyticsReadonly, 
     AnalyticsService.Scope.AnalyticsEdit 
    }; 
    const string serviceAccountEmail = "[email protected]ccount.com"; 
    const string keyFilePath = @"D:\key.p12"; 

    var certificate = new X509Certificate2(certificateFile, "notasecret", X509KeyStorageFlags.Exportable); 
    var serviceAccountCredential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail) 
    { 
     Scopes = scope 
    }.FromCertificate(certificate)); 

    Task<string> task = ((ITokenAccess)serviceAccountCredential).GetAccessTokenForRequestAsync(); 
    task.Wait(); 
    var _accessToken = task.Result; 

    ViewBag.Token = _accessToken; 

    return View(); 
}