2016-06-13 9 views
8

Ich habe Probleme, mich bei Google Analytics Reporting API v4 mit Node.js client library zu authentifizieren. Ich habe alle Methoden versucht, angefangen mit JWT (Service Tokens: JSON & P12), API Keys und OAuth 2.0, aber ich wurde nie erfolgreich authentifiziert.So authentifizieren Sie sich bei der Google Analytics-Berichterstellungs-API v4

Ich habe die API in meiner Entwicklerkonsole aktiviert, IDs erstellt und die Rechte für meine Google Analytics-Eigenschaft und Ansicht gewährt. Ich erhalte erfolgreich Autorisierung und ein Zugriffstoken für mein Dienstkonto, aber ich weiß nicht, wie ich es verwenden kann, um mich bei Analytics Reporting API v4 zu authentifizieren.

Ich stecke vor einer 401 Fehlermeldung: "Die Anfrage hat keine gültigen Anmeldedaten." Ich versuchte mit JWT impersonate Benutzer, aber dann ist das Dienstkonto nicht autorisiert.

Mit Node.js-Client-Bibliothek und JWT Authentifizierung:

var google = require('googleapis.js'); 

var viewID = 'XXXXXXXXX'; // Google Analytics view ID 
var key = require('service_account.json'); // Service account 

var jwtClient = new google.auth.JWT(key.client_email, null, key.private_key, ['https://www.googleapis.com/auth/analytics.readonly'], null); 
var oauth2Client = new google.auth.OAuth2(); 

jwtClient.authorize(function(err, result) { 
    if (err) { 
    console.log('Unauthorize'); 
    console.log(err); 
    return; 
    } 

    oauth2Client.setCredentials({ 
    access_token: result.access_token 
    }); 

    //Need to authenticate somewhere near here 
    var analytics = google.analyticsreporting('v4'); 
    //Or here 

    var req = { 
    reportRequests: [ 
     { 
     viewId: viewID, 
     dateRanges: [ 
      { 
      startDate: '2016-05-01', 
      endDate: '2016-06-30', 
      },], 
     metrics: [ 
      { 
      expression: 'ga:users', 
      }, { 
      expression: 'ga:sessions', 
      },], 
     },], 
    }; 

    //Maybe here 
    analytics.reports.batchGet(req, 
    function(err, response) { 
     if (err) { 
     console.log('Fail'); 
     console.log(err); 
     return; 
     } 
     console.log('Success'); 
     console.log(response); 
    } 
); 
}); 

Frühere Versionen von Node.js-Client-Bibliothek scheint eine Methode, den Client zu geben, aber es verschwunden, vielleicht veraltet.

Ich habe versucht, den Client oder das Token im API-Aufruf oder in der Anfrage zu übergeben, aber keiner funktioniert.

google.analyticsreporting({ version: 'v4', auth: oauth2Client }); 
google.analyticsreporting({ version: 'v4', access_token: result.access_token }); 

Vielleicht ist es eine noob Frage, aber ich weiß nicht, wie es zu tun, ich sehe nicht, etwas zu Analytics bezogene Berichterstattung v4-Authentifizierung in der Google-API oder Client-Bibliothek Dokumentation und die meisten Beispiele i gefunden Verwendungen Google Analytics API Version 3

Wenn jemand Analytics Reporting-API v4 erfolgreich zu authentifizieren verwaltet, bitte helfen:/

Antwort

7

Fand heraus, was mir fehlte:

  • Google APIs-Client-Bibliothek "Optionen":

    google.options({ auth: oauth2Client }); //this one is not very optional 
    
  • Im Gegensatz zur Dokumentation zur Google Analytics Reporting API Version 4 müssen Abfragen, die die Clientbibliothek verwenden, über Header verfügen, um für jede Anforderung einen Client anzugeben (th anks zu CVarisco, die feststellen, dass, client library documentation nicht wirklich genau ist ..):

    var request ={ 
        'headers': {'Content-Type': 'application/json'}, 
        'auth': oauth2Client, 
        'resource': req, 
    }; 
    
+0

Ich versuche, dasselbe in .net zu tun, aber es scheint, dass in API v4, gibt es keine Möglichkeit, nur mit dem API-Schlüssel zuzugreifen, bin ich falsch? http://stackoverflow.com/questions/43685261/analytics-reporting-v4-with-api-key – Giox

+0

Kann dies über einen HTTP-URL-Aufruf erfolgen? – shzyincu

0

Beachten Sie auch, dass die empfohlene Wege-Authentifizierung mit einem Dienstkonto auf Server-Seite zu tun auth.getApplicationDefault verwendet.

https://developers.google.com/identity/protocols/application-default-credentials

Wir empfehlen die Verwendung von Anwendungsstandardanmeldeinformationen in einem der folgenden Umständen:
... schnipp ...
- Sie sind APIs mit Daten in Verbindung mit einem Cloud-Projekt zugreifen oder auf andere Weise beschränkt auf die gesamte Anwendung und nicht auf persönliche Benutzerdaten. Bei Anrufen mit Benutzerdaten empfiehlt es sich stattdessen, einen Autorisierungsablauf zu verwenden, bei dem der Endbenutzer eine ausdrückliche Zustimmung für den Zugriff erteilt (siehe Verwenden von OAuth 2.0 für den Zugriff auf Google APIs).

Verwandte Themen