谷歌API服务器到服务器身份验证PHP

问题描述 投票:1回答:1

这个问题正在推动我的弯道 - 我已根据此页面上的说明创建了一个Google服务帐户

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
                )

这是我的最后一招。我有域范围授权的帐户设置。

有帮助吗?

乔恩

php google-api google-api-php-client service-accounts google-shopping-api
1个回答
0
投票

擅自

表示您正在通过身份验证的帐户无权执行您要执行的操作。

服务帐户

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

服务帐户perauthorization

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

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

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