Yii2 Api Direct library
yii2-direct-api обеспечивает работу с API Yandex.Direct для фреймворка Yii2. Является форком [YiiDirectApi][4], (*1)
Перед использованием данного расширения необходимо зарегистрировать приложение, которое будет работать с API Яндекс.Директа. После регистрации приложению будут присвоены id приложения и пароль приложения., (*2)
Предпочтительный способ установить это расширение через composer., (*3)
$ php composer.phar require g1k/yii2-direct-api "dev-master"
или добавить, (*4)
"g1k/yii2-direct-api": "dev-master"
в разделе require вашего composer.json файла., (*5)
В конфиге приложения добавьте компонент:, (*6)
'components'=>[ ... 'direct' => [ 'class' => 'g1k\direct\DirectApi', 'clientId' => 'ид приложения', 'clientSecret' => 'секретный ключ приложения', 'useSandbox' => true, # использовать ли песочницу. по умолчанию false — использует боевое API 'locale' => 'ru', # на каком языке отдавать ответы. Если не указан, то используется язык приложения 'responseType' => 'code', # Тип ответа от яндекса при получении токена (code, token). Если не указан, то используется code. ] ],
Для получения токена необходимо отправить пользователя на страницу Яндекс.Директа. Ссылку на эту страницу можно получить следующим образом:, (*7)
$link = Yii::$app->direct->getAuthorizeUrl();
В метод getAuthorizeUrl()
можно передать также параметр $state, который
будет возвращен в неизменном виде от Яндекса., (*8)
После того, как пользователь перейдет по сгенерированной ссылке и разрешит доступ, яндекс вернет на url, который был указан при регистрации приложения, код (и если был указан параметр state, то его в неизменном виде)., (*9)
Для того, чтобы получить токен, нужно передать параметр code
, который
вернет Яндекс, методу getDirectToken($code)
, (*10)
$token = Yii::$app->direct->getDirectToken($code);
Данный метод вернет false
в случае ошибки и строку с токеном, в случае
успешного получения. Об обработке ошибок будет рассказано ниже., (*11)
При получении токена через этот метод расширение его запомнит. Если приложение будет пользоваться доступом к данным Яндекс.Директа определенного аккаунта, тогда токен лучше сохранить в какое-нибудь постоянное хранилище., (*12)
Запросы к API осуществляются через методы расширения, названия которых
соответствуют названиям методов API Яндекс.Директа, но начинаются с маленькой
буквы. Например, в API Яндекс.Директа есть метод GetBanners
; сделать
запрос к нему можно через метод расширения getBanners()
. Каждый метод
может принимать массив $param
, который содержит в себе необходимые данные
для выполнения метода. Для некоторых методов этот массив указывать не
обязательно. Содержимое $param
описано для каждого метода API
Яндекс.Директа. Рассмотрим запрос к API на примере метода GetBanners:, (*13)
$res = Yii::$app->direct->getBanners(array( 'CampaignIDS' => array(100, 101, 123), 'GetPhrases' => 'WithPrices' ));
Каждый метод возвращает ответ от Яндекса в случае успеха, или false в том случае, если произошла ошибка., (*14)
Для того, чтобы получить информацию об ошибке, можно воспользоваться методами:, (*15)
getError()
- вернет код ошибки, (*16)
getErrorStr()
- вернет строку ошибки, (*17)
Если мы храним токены и логины у себя, тогда перед работой их нужно передать
расширению, чтобы можно было осуществлять запросы к API. Для этого есть методы
setLogin
и setToken
., (*18)
Yii::$app->direct->setLogin('login')->setToken('token');
Сейчас расширение не дает доступ ко всем методам API Яднекс.Директа. Но реализовано большинство. Не реализованы методы из группы "Метки объявлений", "Изображения в объявлениях", "Ретаргетинг" и "Финансовые операции"., (*19)
Буду очень рад дополнениям. Спасибо., (*20)