1

这个问题正在推动我的转弯 - 我已经按照此页面上的说明创建了一个谷歌服务帐户

https://developers.google.com/shopping-content/v2/quickstart

我有我的 .json 文件

我已经从 git 下载了 google api 库并编写了以下 PHP

require_once 'vendor/autoload.php';

putenv('GOOGLE_APPLICATION_CREDENTIALS=content-api-key.json');

$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/content');

$httpClient = $client->authorize();
$response = $httpClient->get('https://www.googleapis.com/content/v2/********/accounts');

print_r($response);

我替换 ***** 的地方是我的商家 ID。

无论我尝试什么,我都无法连接并收到以下错误。

GuzzleHttp\Psr7\Response Object
(
    [reasonPhrase:GuzzleHttp\Psr7\Response:private] => Unauthorized
    [statusCode:GuzzleHttp\Psr7\Response:private] => 401
    [headers:GuzzleHttp\Psr7\Response:private] => Array
        (
            [Vary] => Array
                (
                    [0] => X-Origin
                    [1] => Origin,Accept-Encoding
                )

            [WWW-Authenticate] => Array
                (
                    [0] => Bearer realm="https://accounts.google.com/", error=invalid_token
                )

这是我最后的手段。我为域范围的委派设置了帐户。

有什么帮助吗?

乔恩

4

1 回答 1

0

未经授权

意味着您进行身份验证的帐户无权执行您尝试执行的操作。

服务帐号

您需要记住的是,服务帐户不是您。它也不是在开发者控制台上创建它的帐户。服务帐户是一个虚拟用户,它在驱动器帐户日历帐户上拥有,您可以与您的共享它的访问权限Merchant Account

服务帐号授权

确保您已按照服务帐户设置您的服务帐户访问权限。

在商家帐户中添加一个新用户,获取服务帐户电子邮件地址并添加该地址。

  1. 将新的服务帐号作为用户添加到您的 Merchant Center 帐号。如果您是第三方开发人员,则需要让您的客户为您执行此步骤。
  2. 转到您的 Merchant Center 帐户。
  3. 转到 Merchant Center 帐户设置中的“用户”列表。
  4. 单击 + 按钮,然后使用服务帐户 ID 作为新用户的电子邮件地址。
  5. 如果您之前没有记下服务帐户 ID,请转到服务帐户管理页面并选择您创建的项目。
  6. 指定用户访问权限和电子邮件通知,注意使用帐户服务需要管理员访问权限。添加服务帐户用户页面截图。
  7. 单击“取消”左侧的蓝色框。您将返回到用户列表,并且服务帐户 ID 应与所选用户角色一起列出。
  8. 对您要添加的所有其他服务帐户重复此过程。
  9. 通过转到“用户”选项卡查看现有服务帐户用户。这些用户的电子邮件地址以“gserviceaccount.com”结尾。
于 2019-03-04T07:10:15.227 回答