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