2013-08-30 9 views
0

У меня проблема с Google Adsense API. Я использовал услуги счета для Authen, и это мой код:Учетная запись Google Adsense

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); 

А потом я получил эту messege ошибки:

Fatal error: Uncaught exception 'Google_ServiceException' with message 'Error calling GET https://www.googleapis.com/adsense/v1.3/reports?startDate=2013-01-01&endDate=2013-03-03&metric=earnings&dimension=date : (403) User does not have an AdSense account.' in /opt/lampp/htdocs/googleads/google-api-php-client/io/Google_REST.php:66 Stack trace: #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('generate', Array) #3 /opt/lampp/htdocs/googleads/index.php(28): Google_ReportsServiceResource->generate('2013-01-01', '2013-03-03', Array) #4 {main} thrown in /opt/lampp/htdocs/googleads/google-api-php-client/io/Google_REST.php on line 66

+0

Сообщение об ошибке: * Пользователь не имеет аккаунта AdSense * Вы уверены, что информация верна? – Raptor

+0

Вы включили AdSense из своей [Консоли API Google] (https://code.google.com/apis/console/)? просто наличие учетной записи AdSense автоматически не дает вам доступа к API. – roninblade

+0

Да, после $ accessToken = $ client-> getAccessToken() ;, я могу получить токен доступа. Но я не могу назвать какую-либо функцию для получения отчета о данных. –

ответ

0

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

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

2

обслуживания счета не доступны в API управления AdSense.

Если вы хотите использовать API без вмешательства пользователя, вы можете использовать сценарии «Веб-приложение» или «Установленное приложение». Как только пользователь предоставит вам доступ к вашему приложению, вы можете начать запрашивать токены доступа.

Отъезд PHP образцы: https://code.google.com/p/google-api-php-client/source/browse/#svn%2Ftrunk%2Fexamples%2Fadsense