0

我在使用 DoubleClick Bid Manager API 进行身份验证时遇到问题 我已按照 Google 的说明设置了一个服务帐户,并且正在使用 Google APIs PHP 客户端库。按照文档,我的代码如下所示:

require_once 'Google/autoload.php';

$client_email = 'myemail.com';

$private_key = file_get_contents('myfilename.p12');

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

$credentials = new Google_Auth_AssertionCredentials(
    $client_email,
    $scopes,
    $private_key,
);




$client = new Google_Client();

$client->setAssertionCredentials($credentials);

if ($client->getAuth()->isAccessTokenExpired()) {
    $client->getAuth()->refreshTokenWithAssertion();
}

$service =  new Google_Service_DoubleClickBidManager($client);
$response = $service->queries->listqueries();

最后一行引发错误:

致命错误:未捕获的异常“Google_Service_Exception”和消息“调用 GET 时出错https://www.googleapis.com/doubleclickbidmanager/v1/queries : (403) 您无权使用 DoubleClick Bid Manager API。请联系 bidmanager-support@google.com。

我已经给他们发了电子邮件,但我不确定那里是否有人为技术问题提供支持。我已经重新阅读了文档,我看不出我哪里出错了。如果有人以前经历过这个或有任何指示,他们将不胜感激!!!

非常感谢

PS 我本周早些时候设置了我的 API 访问权限。同样,我按照文档中的说明进行操作,并收到了来自 Google 的关于设置的最后一封确认电子邮件,因此在这方面一切都应该很好

4

2 回答 2

1

DoubleClick Bid Manager 不支持服务帐户。他们使用 DBM 中的用户权限来定义 API 请求的权限,因此需要基于用户的身份验证。

于 2015-06-02T21:52:52.077 回答
1

您可能需要将服务帐户的用户电子邮件添加到DV 360角色read/write

这就是我使用 google api client library for ruby​​ 的方法:

1-首先创建一个GOOGLE_APPLICATION_CREDENTIALS环境变量:

$ export GOOGLE_APPLICATION_CREDENTIALS='[Path to your client_secrets.json]

2-创建一个服务变量以连接到 api 并为其分配授权:

scopes = 'https://www.googleapis.com/auth/doubleclickbidmanager'
authorization = Google::Auth.get_application_default(scopes)
service = Google::Apis::DoubleclickbidmanagerV1::DoubleClickBidManagerService.new
service.authorization = authorization
service.authorization.fetch_access_token!

# This line would return results from the api
service.download_line_items

请注意,必须将机密文件中的电子邮件帐户.json添加为具有read/write角色的用户DV360

于 2019-07-24T13:18:49.440 回答