3

我正在尝试访问 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

如果我使用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.">

请帮助,提前谢谢。

4

2 回答 2

4

正如其他人在这里所说,您想登录 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']
于 2016-12-07T21:03:02.803 回答
0

例如,服务帐户不是您在 Google 驱动器帐户上拥有的虚拟用户,默认情况下它无权访问任何 DoubleClick Bid Manager API。服务帐户需要预先授权才能访问私人数据。因此,为了能够访问您的双击数据,您必须授予它访问权限。

通常,对于任何其他 API,我会说您使用服务帐户电子邮件地址并将其添加为用户。我无权双击,所以我什至不确定您是否可以手动添加其他用户。他们在文档中没有任何关于服务帐户的内容,这让我觉得它不受支持。如果您设法让它工作,请告诉我们。

于 2016-05-03T08:35:53.727 回答