it-swarm.com.de

Google Analytics-API: "Der Nutzer hat keine ausreichenden Berechtigungen für dieses Konto."

Ich schreibe eine Ruby-App, die auf die Google Analytics-API zugreift, um einige Experimentinformationen abzurufen.

Die App verbindet und authentifiziert sich mithilfe eines Google-Dienstkontos über die folgende Funktion:

def connect
  ...
  @@client = Google::APIClient.new(:application_name => 'My Service App', 
                                    :application_version => '1.0.0')
  key_file = Rails.root.join('config', 'privatekey.p12').to_s
  key_secret = 'somesecret'
  key = Google::APIClient::PKCS12.load_key(key_file, key_secret)
  asserter = Google::APIClient::JWTAsserter.new(
    SECRETS[:google_service_account_email],
    ['https://www.googleapis.com/auth/yt-analytics.readonly',
     'https://www.googleapis.com/auth/analytics.readonly'
    ],
    key
  )
  @@client.authorization = asserter.authorize()
  ...
end

... die beide APIs ohne Probleme authentifiziert und entdeckt.

Die Verwendung des Clients für die YouTube Analytics-API funktioniert problemlos. Verwenden Sie dasselbe Konto, um auf die Analytics-API über ... zuzugreifen.

response = @@client.execute({
  # 'analytics is the API object retrieved via discover_api()
  :api_method => analytics.management.experiments.list, 
  :parameters => {
    'accountId' => 'AAAAAAAA',
    'profileId' => 'PPPPPPPP',
    'webPropertyId' => 'UA-WWWWWWWW-#'
  }
})

Ergebnisse in einer 403-Fehlerantwort:

{"domain":"global","reason":"insufficientPermissions","message":"User does not have sufficient permissions for this account."}

In Bezug auf die Autorisierung habe ich das Konto [email protected] überprüft:

  • Verfügt über vollständige Berechtigungen für die Google Analytics-Weboberfläche. Ich habe mich mit dem Konto [email protected] angemeldet und konnte die gleichen Experimente anzeigen, die ich aufzulisten versuchte.
  • Hat die Analytics-API aktiviert. In der API-Konsole habe ich im Abschnitt Dienste bestätigt, dass das Element Analytics API auf ON gestellt ist. (Genau wie YouTube Analytics.)
  • Ich verwende die entsprechenden Werte für AccountID, ProfileID und WebPropertyID. Direkt von der Google Analytics-Weboberfläche kopiert.

Da das Dienstkonto auf mindestens eine API (YouTube Analytics) zugreifen kann und das zugehörige Konto ([email protected]) auf die Webschnittstelle von Analytics zugreifen kann, scheint ein Fehler beim Zugriff des Dienstkontos auf die Analytics-API zu bestehen .

Irgendwelche Ideen?

Ähnliche Themen:

33
David Elner

Stellen Sie sicher, dass Sie dem Dienstkonto eine E-Mail (z. B. [email protected]) zum Lesen/Schreiben aus Ihrer Ansicht GA geben.

Admin> Ansicht> Benutzerverwaltung> "Berechtigungen hinzufügen für:"

50
Goose

Wähle die richtige ID!

In meinem Fall verwendete ich die richtigen Anmeldeinformationen (Konto-ID, Kontengeheimnis -> Berechtigungscode -> Zugriffstoken) UND hatte die E-Mail-Berechtigungen richtig eingerichtet, aber ich hatte die Konto-ID auf der Seite Admin> Kontoeinstellungen verwendet Hinzufügen von ga: nach vorne. 

Die ID, die Sie tatsächlich benötigen, ist die Tabellen-ID! (oder das ist das, was zumindest für mich funktioniert hat, da die meisten Leute hier die Account-ID erwähnen, die für mich nicht funktionierte.). Sie finden diese hier: https://ga-dev-tools.appspot.com/account-Explorer/

 enter image description here

Und dann kannst du als abfragen

service.get_ga_data(TABLE_ID,'2017-03-25','2017-03-25','ga:users,ga:pageviews')

Ich fand diese API insgesamt schlecht dokumentiert und die Benutzeroberfläche war unklar. Aber vielleicht ist es nur ich.

12
Simon Somlai

Stellen Sie sicher, dass Sie die richtige table_id eingeben 

(ie. GetProfiles(oauth_token)
tableid_input = "ga:72848696")
2
Shane

Wenn Sie diese Nachricht immer noch sehen, nachdem Sie Ihre Entwickler-E-Mail dem analytischen Benutzer hinzugefügt haben.

Möglicherweise müssen Sie dem Objekt vor dem neuen Google_Service_Analytics ($ client) einen Bereich hinzufügen.

$ client-> setScopes (" https://www.googleapis.com/auth/plus.login ");

Ich habe den ganzen Tag versucht, dieses Problem zu lösen!

2
Qin Wang

Ich musste auch zur Entwicklerkonsole gehen und die API aktivieren, damit sie funktioniert. Gehen Sie zu der Entwicklerkonsole , wählen Sie Ihr Projekt aus und aktivieren Sie die APIs, die Sie verwenden möchten.

2
John

Selbst nachdem ich die E-Mail zur Kontoebene in Analytics hinzugefügt hatte, hatte ich immer noch das gleiche Berechtigungsproblem. Der folgende Vorschlag hat jedoch geholfen, konnte aber nicht gelöst werden:

$ client-> setScopes (" https : //www.googleapis.com/auth/plus.login");

Das hat für mich nicht funktioniert, aber das tat:

$ client-> setScopes (" https : //www.googleapis.com/auth/analytics");

https: // ist jetzt zur Authentifizierung erforderlich.

2
user2760338

Wenn Sie neu sind, informieren Sie Sie einfach über den erforderlichen 3-Schritt-Vorgang 

  1. Aktivieren Sie die Google Analytics-Berichterstellungs-API, und erstellen Sie ein Service-E-Mail-Konto (OAuth-Client-ID).
  2. Fügen Sie dieser Service-E-Mail in der Google-Konsole hinzu und geben Sie deren Erlaubnis 
  3. Fügen Sie dieses Service-E-Mail-Konto in Google Analytics-Tracking -> Nutzerverwaltung hinzu, und erteilen Sie eine Genehmigung 
0
Zahid