środa, 19 sierpnia 2009

AdWords API v2009 w PHP5 - część 1

Od release nowej wersji API minęło już parę miesięcy. Dopiero niedawno miałem okazję bliżej się temu przyjrzeć i trochę pokodować.
Nowa wersja znacznie różni się od poprzednich. Wygląda na to, że będziemy mieli więcej serwisów, w każdym serwisie tylko 2 metody. Np CampaignService w wersji 13 udostępniał szereg metod:
  • addCampaign
  • addCampaignList
  • getCampaign
  • getCampaignList
  • getCampaignStats
  • updateCampaign
  • ...
W nowej wersji API V2009 wszystkie te metody zostały zastąpione dwoma - get i mutate.
Metoda get zastępuje w zasadzie wszystkie metody z wersji 13 zaczynające się od get.... Mutate zastępuje metody add oraz update.

Metodą get możemy pobrać zarówno dane kampanii jak i jej statystyki. Jako parametr metody podajemy CampaignSelector, w którym to możemy zdefiniować o jakie kampanie i jakie dane nam chodzi. Np wybieramy tylko kampanie o statusie "ACTIVE" albo ID mieszczącym się w zbiorze 1,2,3,4,5.

Zanim przejdziemy do przykładu, najpierw kilka rzeczy które musimy mieć aby skorzystać z API:
  1. Konto Google
  2. Auth Token (autoryzacja była inaczej rozwiązana w v13)
  3. Zainicjalizowane konto adwords sandbox
Przykłady zapytań do AdWords API v2009 możemy znaleźć na Google Code. Zawarte tam przykłady korzystają z biblioteki nusoap i są to raczej "klejone z ręki" xmle.
W moim przykładzie korzystam z rozszerzenia php5-soap.

Dane do nagłówka/autoryzacji:
$headers = array (
'authToken' => 'xxxxxxxxxxx',
'clientEmail' => 'client_1+webdevday.sandbox@gmail.com',
'userAgent' => 'webdevday',
'developerToken' => 'webdevday.sandbox@gmail.com++EUR',
'applicationToken' => 'token',
);
Inicjalizacja klienta i header:
$ns = 'https://adwords.google.com/api/adwords/cm/v200906';
$service = 'https://adwords-sandbox.google.com/api/adwords/cm/v200906/CampaignService';

$client = new SoapClient($service .'?wsdl', array('trace' => true, 'connection_timeout' => 60, 'exceptions' => 1));

$soapHeaders = array(new SOAPHeader($ns, 'RequestHeader', $headers));


Przykład zapytania - odpowiednik metody getAllAdWordsCampaigns() z wersji 13:

$selector = array('ids' => array());
$params = array('selector' => $selector);
$method = 'get';


try {
$response = $client->__soapCall($method, array($params), null, $soapHeaders);
} catch (Exception $e)
{
var_dump($e->getMessage());
var_dump($client->__getLastRequest());
var_dump($client->__getLastResponse());
}

var_dump($response);



2 komentarze:

  1. Witam,

    Proszę o kontakt na viaro [at] @o2.pl
    Mam dla Pana - (autora tego bloga) bardzo ciekawą propozycję współpracy.

    Pozdrawiam!

    OdpowiedzUsuń
  2. Dość pomocna, chodź stara publikacja. Pomogła mi co nieco wykonać na stronę internetowa mojej firmy

    OdpowiedzUsuń