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)