使用服务帐户的 Doubleclickbid 管理器 api

Tee*_*jay 4 python google-api service-accounts google-admin-sdk double-click-advertising

我正在尝试访问 dbm api ,我正在使用服务帐户验证 url,请查找下面的示例代码

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
Run Code Online (Sandbox Code Playgroud)

如果我使用oauth机制来验证 url,则代码可以正常运行,因为我不需要用户交互,所以我需要服务器到服务器机制,所以我使用了服务帐户

我尝试过的步骤:

我已经创建了服务帐户并下载了json密钥文件并在代码中使用,但是当我尝试运行我的代码时,它会抛出以下错误:

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 dbm-support@google.com.">
Run Code Online (Sandbox Code Playgroud)

请帮忙,提前致谢。

小智 5

正如其他人在这里所说的,您想要登录 DBM 站点并将您的服务帐户添加为用户:

添加新的用户界面

然后,根据本文档,您可以使用客户端机密 json 文件设置服务帐户凭据。如果您希望该服务帐户能够访问您在用户帐户(登录时使用的帐户)下在 DBM 中创建的报告,则需要委派域范围的权限:

delegated_credentials = credentials.create_delegated('user@example.org')
http_auth = delegated_credentials.authorize(Http())
dbm = build('doubleclickbidmanager', 'v1', http=http_auth)
queries = dbm.queries().listqueries().execute()['queries']
Run Code Online (Sandbox Code Playgroud)