我是新手,所以我从各种官方文档中得到提示,创建一个服务帐户等,并使用PHP客户端为谷歌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。