微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 Google API PHP 客户端验证服务帐户

如何解决无法使用 Google API PHP 客户端验证服务帐户

我是新手,所以我从各种官方文档中得到提示,创建了一个服务帐户等,并使用 PHP 客户端为 Google Api 使用该服务帐户的凭据 JSON 发出 HTTP 请求。

但我不确定出了什么问题,它只是不起作用(对于上下文,我正在尝试使用索引 API - https://developers.google.com/search/apis/indexing-api/v3/prereqs#php

require_once ABSPATH . '/googlelibraries/google-api-PHP-client/vendor/autoload.PHP';

$client = new Google_Client();
$serviceKeyFile = __DIR__ . '/daxxxxx-b1xxxxxxc8.json';
$client->setAuthConfig( $serviceKeyFile );
$client->useApplicationDefaultCredentials();

$client->setSubject( 'ixxxxxxxxn@gmail.com' );
$client->addScope('https://www.googleapis.com/auth/indexing');
$client->setAccesstype('offline');
// $client->createApplicationDefaultCredentials();
// $client->setClientId( '10xxxxxxxxxxx' );
$endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';

这就是我所拥有的,与示例文档中的几乎相同,但是,当我调用 $client->authorize() 来让 Guzzle 客户端进行身份验证以发出请求时,我什么也没看到,一切都变成空白,没有错误,我可以稍后调试它,错误就像 -

Fatal error: Uncaught Exception: Magic request methods require a URI and optional options array
in /var/www/html/googlelibraries/google-api-PHP-client/vendor/guzzlehttp/guzzle/src/Client.PHP on line 84

我不在乎它是否通过身份验证,现在的问题是 authorize 方法本身会抛出一个错误,我不知道它到底是什么,没有详细的指南,我会寻找。有什么想法吗?

解决方法

并非所有 google api 都支持服务帐户身份验证。您似乎正在尝试使用索引 api。如果你查看文档 #OAuth2Authorizing 你会发现它只提到了 Oauth2 授权,这是因为这个 api 不支持服务帐户授权。

您需要切换到 Oauth2。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。