Справочники, инструменты, документация

PHP: Как получить токен (ключ OAuth-авторизации) и user-id в Яндекс API

Создаем PHP-скрипт там, куда вернет ответ Яндекс для получения ключа.
PHP: Как получить токен (ключ OAuth-авторизации) и user-id в Яндекс API

Яндекс API — как получить ключ OAuth-авторизации

https://yandex.ru/dev/direct/doc/dg-v4/examples/auth-token-sample-docpage/

<?php
// Идентификатор приложения
$client_id = 'YOUR_CLIENT_ID'; 
// Пароль приложения
$client_secret = 'YOUR_CLIENT_SECRET';

// Если скрипт был вызван с указанием параметра "code" в URL,
// то выполняется запрос на получение токена
if (isset($_GET['code']))
 {
 // Формирование параметров (тела) POST-запроса с указанием кода подтверждения
 $query = array(
 'grant_type' => 'authorization_code',
 'code' => $_GET['code'],
 'client_id' => $client_id,
 'client_secret' => $client_secret
 );
 $query = http_build_query($query);

 // Формирование заголовков POST-запроса
 $header = "Content-type: application/x-www-form-urlencoded";

 // Выполнение POST-запроса и вывод результата
 $opts = array('http' =>
 array(
 'method' => 'POST',
 'header' => $header,
 'content' => $query
 ) 
 );
 $context = stream_context_create($opts);
 $result = file_get_contents('https://oauth.yandex.ru/token', false, $context);
 $result = json_decode($result);

 // Токен необходимо сохранить для использования в запросах к API Директа
 echo $result->access_token;
 }
?>
  1. Регистрируем-заполняем поля для создания своего приложения здесь https://oauth.yandex.ru/client/new

В поле Доступ к данным указываем к каким данным или сервисам требуется подключение, например, webmaster:hostinfo, metrika:read, login:email.

  1. Нажимаем создать приложение и получаем ID и секретный ключ, примерно такого вида
ID: 8sd4d0ffsdasdasdsdas160a3
Пароль: d1sdasdsd3dfgffgk3j4kj23ljk3lb8
  1. Вводим в браузере адрес:
https://oauth.yandex.ru/authorize?response_type=code&client_id=<идентификатор_приложения>

<!-- Пример -->
https://oauth.yandex.ru/authorize?response_type=code&client_id=8sd4d0ffsdasdasdsdas160a3
  1. Жмем Разрешить — получаем в ответ наш токен ключ для авторизации.
AgAAAAAEvkq-XXXXXXXXXXXXXXXXXXXXXXXXXXX

Яндекс API — как получить user-id

<?php
$ch = curl_init('https://login.yandex.ru/info');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('format' => 'json')); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ваш_ключ'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$info = curl_exec($ch);
curl_close($ch);

$info = json_decode($info, true);
echo '<pre>';
print_r($info);
echo '</pre>';

Переходим по адресу скрипта выше и получаем вот такой ответ:

Array
(
    [id] => 123456
    [login] => abcdefg
    [client_id] => 8asadsd3434d0dsf0dfds232
    [psuid] => 1.AvdbllpLdw.kcAzmsdfjienXSJOKqZQ.quiYoxvsddV_gdeeeUfWR-Nw
)

Документация API: https://yandex.ru/dev/webmaster/doc/dg/concepts/About.html