2

Ich versuche dbm api zugreifen zu können, ich die URL am Authentifizieren Konto mit Service finden Sie in den folgenden BeispielcodeDoubleclickbid Manager api mit Dienstkonto

from oauth2client.service_account import ServiceAccountCredentials 
from apiclient.discovery import build 
from httplib2 import Http 

scopes =['https://www.googleapis.com/auth/doubleclickbidmanager'] 


credentials = ServiceAccountCredentials.from_json_keyfile_name(
'path/to/key/.jsonfile', scopes=scopes) 

http_auth = credentials.authorize(Http()) 
body={} 

dbm = build('doubleclickbidmanager', 'v1', http=http_auth) 
print dbm 
request = dbm.lineitems().downloadlineitems(body=body).execute() 

print request 

finden Wenn ich oauth Mechanismus verwenden, um die URL zu authentifizieren der Code ich brauche Server zu Server-Mechanismus richtig läuft, da ich keine Interaktion mit dem Benutzer wünschen, damit ich Dienstkonto verwendet

Schritte, die ich versucht:

ich das Dienstkonto erstellt haben und heruntergeladen die json Schlüsseldatei und im Code verwendet, aber wenn ich versuche, meinen Code auszuführen wirft es die folgenden Fehler:

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/doubleclickbidmanager/v1/lineitems/downloadlineitems?alt=json returned "You are not authorized to use DoubleClick Bid Manager API. Please contact [email protected]"> 

Bitte helfen, danke im voraus.

Antwort

0

Ein Dienstkonto ist nicht ein Dummy-Benutzer, sondern beispielsweise ein Google-Konto. Standardmäßig hat es keinen Zugriff auf DoubleClick Bid Manager-APIs. Dienstkonten müssen vorautorisiert sein, um auf private Daten zugreifen zu können. Um also auf Ihre Doppelklick-Daten zugreifen zu können, müssen Sie ihr Zugriff gewähren.

Normalerweise würde ich mit jeder anderen API sagen, dass Sie die E-Mail-Adresse des Dienstkontos nehmen und es als Benutzer hinzufügen. Ich habe keinen Zugriff auf Doppelklick, so dass ich nicht einmal sicher bin, ob Sie andere Benutzer manuell hinzufügen können. Sie haben nichts in der Dokumentation über Service-Accounts irgendwie lässt mich denken, dass es nicht unterstützt wird. Lassen Sie es uns wissen, wenn Sie es schaffen, es zur Arbeit zu bringen.

+0

ich Ihren Punkt akzeptieren "nehmen die E-Mail-Adresse des Dienstkontos und füge sie als Benutzer hinzu ", kannst du mir bitte die Vorgehensweise mitteilen, ob ich ein Admin-Google-Konto benötige, um zu autorisieren – Teejay

+0

Wie gesagt, ich habe kein DoubleClick-Gebot, also nicht wirklich wissen, dass Sie es googlen müssen. Aber ja würde ich annehmen, dass Sie der admin des doubleclick Bidkontos sein müssten, um einen anderen Benutzer hinzuzufügen, wenn es sogar möglich ist, einen anderen Benutzer hinzuzufügen, um auf Ihr Konto zuzugreifen – DaImTo

+0

@Teejay Ich habe auch das gleiche Problem. Die E-Mail-Adresse des Dienstkontos wurde hinzugefügt, aber mein Code löst immer noch den gleichen Fehler aus wie bei Ihnen. –

3

Wie andere hier schon gesagt haben, möchten Sie die DBM-Website einloggen und Ihr Dienstkonto als Benutzer hinzufügen:

Add new user interface

Dann können Sie mit Kontodienstanmeldeinformationen richten Sie Client-Secrets-JSON-Datei. Wenn Sie das Dienstkonto in der Lage sein wollen, Berichte zugreifen, die Sie in DBM unter Ihrem Benutzerkonto erstellt haben (was Sie sich einloggen mit) benötigen Sie domänenweite Autorität delegieren:

delegated_credentials = credentials.create_delegated('[email protected]') 
http_auth = delegated_credentials.authorize(Http()) 
dbm = build('doubleclickbidmanager', 'v1', http=http_auth) 
queries = dbm.queries().listqueries().execute()['queries']