Как получить доступ к песочнице API Яндекс Директа?

Вроде все делаю как в руководстве, но не могу получить доступ к песочнице.

1. Зарегистрировал приложение.
2. Получил отладочный токен. Приложение появилось в списке "Мои приложения"
3. Включил песочницу.

Шлю запрос:
var sandbox = 'https://api-sandbox.direct.yandex.ru/v4/json/';
var postBody = {
    'method': 'GetCampaignsList',
    'locale': 'ru',
    'token': 'token',
};
var options = {
	url: sandbox,
	followAllRedirects: true,
	body: JSON.stringify(postBody),
	'content-type': 'application/json',
};

request.post(options, function(error, response, body) {
	if (!error && response.statusCode == 200) {
		console.log(body);
	} else {
		console.log('error', error);
	}
});


В ответ получаю: No access. You need to fill out an app access request in the Direct interface and wait for confirmation.

Что я упустил или делаю не так?
  • Вопрос задан
  • 4786 просмотров
Решения вопроса 1
@rizzli Автор вопроса
В итоге все заработало) Видимо хоть и приняли заявку на доступ, но фактически доступ был получен позже.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sivkoff
@Sivkoff
Web Developer
Насколько я помню, при request.post нужно данные записывать в свойство form, а не в body.
Ну и JSON.stringify не нужен.
Т.е. ваша переменная options должна выглядеть так:
var options = {
  url: sandbox,
  followAllRedirects: true,
  form: postBody,
  'content-type': 'application/json',
};
Ответ написан
@BRODJAGA_JR
Я все сделал, как топик стартер, но в ответ все равно приходит: No access. You need to fill out an app access request in the Direct interface and wait for confirmation.
Куда копать господа?

Беру пример на пхп и хочу получить инфо о компании в песочнице:

<?php

/*
    Пример программного кода для работы с API сервиса Яндекс.Директ
 
     В примере использован рекомендуемый синтаксис для работы с API сервиса Яндекс.Директ 
         на языке PHP с использованием протокола JSON и авторизацией по токенам.
 
     Обращаем внимание, что все текстовые данные должны быть в кодировке UTF8
 
     Подробнее про получение токена читайте в документации:
         http://api.yandex.ru/direct/
*/

require_once "HTTP/Request.php";

// Важно: данные отправляем POST-методом
$req =& new HTTP_Request("https://api.direct.yandex.ru/v4/json/");
$req->setMethod(HTTP_REQUEST_METHOD_POST);

// Инициализация параметров для авторизации
$data = array(
    token => "**************"
    );

// Параметры для запроса метода GetClientInfo
$data['method'] = "GetClientInfo";
$data['param'] = array("*******");

/*
    Если ваша версия php не поддерживает встроенной функции json_encode/json_decode,
    можно воспользоваться библиотекой: http://pear.php.net/package/Services_JSON
*/ 

//require_once 'Classes/json.php';
//$json = new Services_JSON;
//$json_data = $json->encode($data);

/*
    Если встроенные функции json_encode/json_decode поддерживаются, то программа может выглядеть так:
  */      $json_data = json_encode($data);
        $decoded_result = json_decode($result);



$req->addRawPostData($json_data);

$response = $req->sendRequest();
$errmsg = PEAR::isError($response);

if (! $errmsg) {
     $result = $req->getResponseBody();
    // $decoded_result = $json->decode($result);
      $decoded_result = json_decode($result);

     if (isset($decoded_result->data)) {

         // Обработка ответа метода
         print_r($decoded_result);

     } else if ($decoded_result->error_code) {
         // Если ошибку вернул сервер API
         echo "Error: code = ".$decoded_result->error_code
                     .", str = ".$decoded_result->error_str
                     .", detail = ".$decoded_result->error_detail;
     } else {
         echo "Unknown error";
     }

} else {
    // Если ошибка произошла при попытке запроса
    echo "Request error: ".$errmsg;
}

?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы