Аккаунт сервисов Google Adsense

У меня проблема с Google AdSense API. Я использовал учетную запись службы для аутентификации, и это мой код:

require_once dirname(__FILE__) . '/google-api-php-client/Google_Client.php';    
require_once dirname(__FILE__) . '/google-api-php-client/contrib/Google_AdSenseService.php';
require_once dirname(__FILE__) . '/google-api-php-client/contrib/Google_Oauth2Service.php';

$SERVICE_ACCOUNT_PKCS12_FILE_PATH = dirname(__FILE__) . '/keyfile.p12';

// create client object and set app name
$client = new Google_Client();
$client->setApplicationName("XXXX"); // name of your app

// set assertion credentials
$key  = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH);
$auth = new Google_AssertionCredentials("[email protected]", // email you added to GA
    array('https://www.googleapis.com/auth/adsense.readonly'), $key);

$client->setAssertionCredentials($auth);
$client->getAuth()->refreshTokenWithAssertion();
$accessToken = $client->getAccessToken();
// other settings
$client->setClientId("XYZ.apps.googleusercontent.com"); // from API console
$service   = new Google_AdsenseService($client);
$optParams = array('metric' => array('earnings'), 'dimension' => 'date');
$data      = $service->reports->generate('2013-01-01', '2013-03-03', $optParams);

И тогда я получил это сообщение об ошибке:

Неустранимая ошибка: необработанное исключение "Google_ServiceException" с сообщением "Ошибка при вызове GET https://www.googleapis.com/adsense/v1.3/reports?startDate=2013-01-01&endDate=2013-03-03&metric : (403) У пользователя нет учетной записи AdSense.' в /opt/lampp/htdocs/googleads/google-api-php-client/io/Google_REST.php:66 Трассировка стека: #0 /opt/lampp/htdocs/googleads/google-api-php-client/io/Google_REST .php(36): Google_REST::decodeHttpResponse(Object(Google_HttpRequest)) #1 /opt/lampp/htdocs/googleads/google-api-php-client/service/Google_ServiceResource.php(186): Google_REST::execute(Object (Google_HttpRequest)) #2 /opt/lampp/htdocs/googleads/google-api-php-client/contrib/Google_AdSenseService.php(849): Google_ServiceResource->__call('генерировать', массив) #3 /opt/lampp/ htdocs/googleads/index.php(28): Google_ReportsServiceResource->generate('2013-01-01', '2013-03-03', Array) #4 {main} добавлено в /opt/lampp/htdocs/googleads/ google-api-php-client/io/Google_REST.php в строке 66


person Mai Truong    schedule 30.08.2013    source источник
comment
Сообщение об ошибке: У пользователя нет учетной записи AdSense Вы уверены, что информация верна?   -  person Raptor    schedule 30.08.2013
comment
Вы включили AdSense в своей консоли API Google? просто наличие учетной записи AdSense не дает вам автоматически доступ к API.   -  person roninblade    schedule 30.08.2013
comment
Да, после $accessToken = $client->getAccessToken(); я могу получить токен доступа. Но я не могу вызвать какую-либо функцию для получения отчета о данных.   -  person Mai Truong    schedule 30.08.2013


Ответы (1)


К сожалению, в настоящее время AdSense API не поддерживает учетную запись службы, поэтому данные AdSense невидимы для API (поэтому вы получаете эту ошибку).

Возможно, лучшим решением будет использовать вход через веб-приложение: https://developers.google.com/adsense/management/getting_started#auth

person Konstantin    schedule 29.10.2013