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:
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:
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:"
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/
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.
Stellen Sie sicher, dass Sie die richtige table_id eingeben
(ie. GetProfiles(oauth_token)
tableid_input = "ga:72848696")
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!
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.
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.
Wenn Sie neu sind, informieren Sie Sie einfach über den erforderlichen 3-Schritt-Vorgang