这是我的代码:
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once 'Google/Client.php';
require_once 'Google/Service/AdExchangeSeller.php';
$scriptUri = "http://example.com/some_seller_api.php";
$client_id = 'XXXXXX.apps.googleusercontent.com';
$service_account_name = 'XXXXXXXXX@developer.gserviceaccount.com';
$key_file_location = '/XXXXX/privatekey.p12';
$client = new Google_Client();
$client->setApplicationName("Example_app");
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/adexchange.seller.readonly'),
$key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
$service = new Google_Service_AdExchangeSeller($client);
$acc = $service->adclients->listAdclients();
我在https://github.com/google/google-api-php-client/blob/master/examples/service-account.php的官方手册和示例中做了所有事情 .
我有一个错误:
Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error refreshing the OAuth2 token, message: '{ "error" : "access_denied", "error_description" : "Requested client not authorized." }''
我究竟做错了什么?
1 回答
您似乎未使用目标服务授权您的应用程序 . OAuth2步骤之一是您的应用程序(将要访问该服务的应用程序)需要与目标服务“注册”(或授权) . 这是您注册回调URL等的方式 .
根据您的代码,您正在访问Ad Exchange Seller REST API . 打开以下链接并按照分步指南进行操作,以解决您遇到的问题:
https://developers.google.com/ad-exchange/seller-rest/getting_started#auth