我尝试访问dbm api,我正在使用服务帐户验证网址,请在下面找到示例代码
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
如果我使用oauth
机制验证代码运行正常的网址,因为我不想要用户交互,我需要服务器到服务器机制,所以我使用了服务帐户
我尝试的步骤:
我创建了服务帐户并下载了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.">
请提前帮助,谢谢。
答案 0 :(得分:4)
正如其他人在此处所述,您希望以用户身份登录DBM网站并添加服务帐户:
然后,per this documentation,您可以使用客户端机密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']
答案 1 :(得分:0)
例如,服务帐户不是您在Google云端硬盘帐户上使用的虚拟用户,默认情况下,它无法访问任何DoubleClick Bid Manager API。需要预先授权服务帐户才能访问私人数据。因此,为了能够访问您的双击数据,您必须授予其访问权限。
通常使用任何其他API,我会说您使用服务帐户电子邮件地址并将其添加为用户。我没有双击的权限,所以我甚至不确定你是否可以手动添加其他用户。他们在服务帐户的文档中没有任何东西让我认为它不受支持。如果你设法让它发挥作用,请告诉我们。