Exemple #1
0
 public static function init($client_id, $client_secret)
 {
     //require_once 'libs/phar://yandex-php-library_master.phar/vendor/autoload.php';
     /*$client_id = "d0387d6c503246909145797d469d7248";
     		$client_secret = "576b5cf52f1b4f1bab1eb7eeca1db60f";*/
     // Если мы еще не получили разрешения от пользователя, отправляем его на страницу для его получения
     // В урл мы также можем вставить переменную state, которую можем использовать для собственных нужд, я не стал
     if (!isset($_GET["code"])) {
         Header("Location: https://oauth.yandex.ru/authorize?response_type=code&client_id=" . $client_id);
         die;
     }
     // Если пользователь нажимает "Разрешить" на странице подтверждения, он приходит обратно к нам
     // $_Get["code"] будет содержать код для получения токена. Код действителен в течении часа.
     // Теперь у нас есть разрешение и его код, можем отправлять запрос на токен
     function postKeys($url, $peremen, $headers)
     {
         $post_arr = array();
         foreach ($peremen as $key => $value) {
             $post_arr[] = $key . "=" . $value;
         }
         $data = implode('&', $post_arr);
         $handle = curl_init();
         curl_setopt($handle, CURLOPT_URL, $url);
         curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
         curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
         curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
         curl_setopt($handle, CURLOPT_POST, true);
         curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
         curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
         $response = curl_exec($handle);
         $code = curl_getinfo($handle, CURLINFO_HTTP_CODE);
         return array("code" => $code, "response" => $response);
     }
     $result = postKeys("https://oauth.yandex.ru/token", array('grant_type' => 'authorization_code', 'code' => $_GET["code"], 'client_id' => $client_id, 'client_secret' => $client_secret), array('Content-type: application/x-www-form-urlencoded'));
     if ($result["code"] == 200) {
         $result["response"] = json_decode($result["response"], true);
         $token = $result["response"]["access_token"];
         //echo "Your token" .$token ."<br/>";
         return $token;
     } else {
         //echo "Какая-то фигня! Код: ".$result["code"];
         return $result["code"];
     }
     // Токен можно кинуть в базу, связав с пользователем, например, а за пару дней до конца токена напомнить, чтобы обновил
 }
<?php

$client_id = "1e14369dd1b74b50b0254bc2325f96c1";
$client_secret = "42f26d8e7cf740bbaddc0f1e950ac22b";
// Если мы еще не получили разрешения от пользователя, отправляем его на страницу для его получения
// В урл мы также можем вставить переменную state, которую можем использовать для собственных нужд, я не стал
if (!isset($_GET["code"])) {
    Header("Location: https://oauth.yandex.ru/authorize?response_type=code&client_id=" . $client_id);
    die;
}
// Если пользователь нажимает "Разрешить" на странице подтверждения, он приходит обратно к нам
// $_Get["code"] будет содержать код для получения токена. Код действителен в течении часа.
// Теперь у нас есть разрешение и его код, можем отправлять запрос на токен.
$result = postKeys("https://oauth.yandex.ru/token", array('grant_type' => 'authorization_code', 'code' => $_GET["code"], 'client_id' => $client_id, 'client_secret' => $client_secret), array('Content-type: application/x-www-form-urlencoded'));
// отправляем запрос курлом
function postKeys($url, $peremen, $headers)
{
    $post_arr = array();
    foreach ($peremen as $key => $value) {
        $post_arr[] = $key . "=" . $value;
    }
    $data = implode('&', $post_arr);
    $handle = curl_init();
    curl_setopt($handle, CURLOPT_URL, $url);
    curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($handle, CURLOPT_POST, true);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
    $response = curl_exec($handle);