---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://yandex.ru/dev/direct/doc/en/php5-file_get_contents-token.md
  - https://yandex.ru/dev/direct/doc/ru/php5-file_get_contents-token.md
sourcePath: ru/examples/php5-file_get_contents-token.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/direct/doc/ru/llms.txt

# Получение токена

PHP версии 5, используется функция file_get_contents

Пример демонстрирует получение OAuth-токенa веб-сервисом. Рекомендации для других типов приложений (настольное, мобильное) приведены в [документации Яндекс.OAuth](https://tech.yandex.ru/oauth/doc/dg/)[документации Яндекс.OAuth](https://tech.yandex.com/oauth/doc/dg/).

## Callback URL {#callback-uri}

При регистрации или редактировании параметров приложения на сервисе Яндекс.OAuth необходимо в поле **Callback URL** указать URL скрипта, выполняющего получение токена. Например:

```no-highlight translate=no
 https://site.ru/get_token.php
```

Код скрипта приведен ниже.

## Последовательность действий {#get-token}

При запросе токена требуется указывать идентификатор и пароль приложения, сгенерированные при регистрации на сервисе Яндекс.OAuth.

1. Приложение направляет пользователя на страницу запроса доступа по ссылке вида
    ```no-highlight translate=no
    https://oauth.yandex.ru/authorize?response_type=code&client_id=ИДЕНТИФИКАТОР_ПРИЛОЖЕНИЯ
    ```
    
    На открывшейся странице пользователь нажимает кнопку **Разрешить**.
    
1. Яндекс.OAuth осуществляет редирект на адрес из **Callback URL**. При этом к адресу добавляется параметр `code`. Например:
    ```no-highlight translate=no
    http://site.ru/get_token.php?code=КОД_ПОДТВЕРЖДЕНИЯ
    ```
    
1. Скрипт выполняет POST-запрос на _https://oauth.yandex.ru/token_, передавая следующие параметры:
    - `grant_type = authorization_code`
    
    - `code` = КОД_ПОДТВЕРЖДЕНИЯ
    
    - `client_id` = ИДЕНТИФИКАТОР_ПРИЛОЖЕНИЯ
    
    - `client_secret` = ПАРОЛЬ ПРИЛОЖЕНИЯ
    
1. Яндекс.OAuth передает ответ в формате JSON. Ключ `access_token` содержит OAuth-токен. Например:
    ```text translate=no
    {"access_token": "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"}
    ```
    
    Полученный токен необходимо сохранить и использовать в запросах к API Директа.
    

## Код скрипта {#code}

Для использования примера укажите идентификатор и пароль приложения.

```php translate=no
<?php
// Идентификатор приложения
$client_id = 'ИДЕНТИФИКАТОР_ПРИЛОЖЕНИЯ'; 
// Пароль приложения
$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;
  }
// Если скрипт был вызван без указания параметра "code",
// пользователю отображается ссылка на страницу запроса доступа
  else 
    {
      echo '<a href="https://oauth.yandex.ru/authorize?response_type=code&client_id='.$client_id.'">Страница запроса доступа</a>';
    }
?>
```

