У нас (как и у всех) был новый год. Я давно ничего не писал, так как праздники, а потом сессия (сейчас я студент), но вот она закрыта и можно что-то интересное сюда написать.
Сейчас занялся Яндексом, а точнее его api для приложений. Первое что пригодилось — Api Яндекс.Фоток. Этот интерфейс позволяет общаться с сервисом хранения фотографий яндекса. Первое что нужно для работы с ним — получение токена от пользователя. Для того, что бы получить этот token я написал следующую функцию:
function GetToken($username, $password, $client_id, $client_secret) { $url = 'https://oauth.yandex.ru/token'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); // set url to post to curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable curl_setopt($ch, CURLOPT_TIMEOUT, 9); curl_setopt($ch, CURLOPT_POST, 1); // set POST method curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=password&username=$username&password=$password&client_id=$client_id&client_secret=$client_secret"); // add POST fields $result = curl_exec($ch); // run the whole process curl_close($ch); $Resp = json_decode($result, true); return $Resp['access_token']; }
Я захотел использовать метод по логину и паролю, поэтому передаю и эти параметры. Процедура получения токена описана в api на этой странице. Для получения token’а нужно отправить POST запрос на специальный адрес.Здесь я в основном настраиваю тот самый запрос.
Указываю, куда отправить запрос; Указываю, что нужно прерываться при ошибке; Что нужно следовать редиректам; Указываю, что нужно сохранить результат выполнения в переменную; Указываю время до тайм-аута в 9 ms; говорю, что это будет тот самый POST-запрос и указываю данные которые нужно отправить — как в документе с Яндекса. После чего выполняю запрос и завершаю работу с cURL.
После выполнения запроса, в переменной $result будет находится документ в формате json, который остается только преобразовать в массив и извлечь нужные данные.
Преобразование делается с помощью функции json_decode(). Флаг true означает, что на выходе мне нужен ассоциативный массив. Последний шаг — возвращение самого ключа из функции. На этом всё.