Серверная авторизация с помощью vkontakte (Рейтинг: +7)
Для проекта нужно было разработать модуль авторизации с vkontakte.ru. После курения мануалов получилось очень даже неплохо. И так как увидел в блоге отминусованую статью (сабж), то решил написать самому.
Помолясь приступим
Шаг 1.
Создание приложения на сайте vk.com с последующей настройкой. Она несложная, нужно всего лишь прописать адрес сайта и базовый домен. Там же получаем защитный ключ и id приложения, которые будем использовать дальше.
Шаг 2.
На странице, на которой вы разместили кнопку авторизации(или ссылку, как в нашем примере), делаем так, чтобы при нажатии на нее нас перекинуло по адресу
Теперь нас при нажатии на ссылку переадресовывает туда куда нужно.
Шаг 3.
Создадим сам скрипт - обработчик, который будет работать непосредственно с пользователем, его данными и выполнять авторизацию.
Вот как-бы и все) И да, не забываем, что в настройках приложения нужно будет указать в форме "Адрес сайта" путь к обработчику, то есть site.ru/auth.php, к примеру.
Добавил: Кевин Митник
30.05.2012 / 02:35Помолясь приступим
![smile](/uploads/stickers/smile.gif)
Шаг 1.
Создание приложения на сайте vk.com с последующей настройкой. Она несложная, нужно всего лишь прописать адрес сайта и базовый домен. Там же получаем защитный ключ и id приложения, которые будем использовать дальше.
Шаг 2.
На странице, на которой вы разместили кнопку авторизации(или ссылку, как в нашем примере), делаем так, чтобы при нажатии на нее нас перекинуло по адресу
http: //api.vk.com/oauth/authorize?client_id=ID&redirect_uri=REDIRECT&display=MODE. Где ID - айди нашего приложения, REDIRECT - адрес скрипта - обработчика, MODE - режим отображения окна авторизации(page – форма авторизации в отдельном окне, popup – всплывающее окно, touch – авторизация для мобильных Touch-устройств , wap – авторизация для мобильных устройств с маленьким экраном или без поддержки Javascript). Это можно реализовать несколькими способами, но я напишу как делал сам.
<?php $ID = ""; //наш Id приложения $REDIRECT = ""; // адрес обработчика echo " <script> function authVk(){ location.href = 'http://api.vk.com/oauth/authorize?client_id=".$ID."&redirect_uri=".$REDIRECT."&display=page'; } </script> <a href=\"#\" onclick=\"authVk();\" >Вконтакте</a>"; ?>
Теперь нас при нажатии на ссылку переадресовывает туда куда нужно.
Шаг 3.
Создадим сам скрипт - обработчик, который будет работать непосредственно с пользователем, его данными и выполнять авторизацию.
<?php $SECRET = ""; // секретный код, полученный в панели управления приложением на vkontakte if ($code = $_GET['code']){ if($curl = curl_init()){ $St = 'https://api.vk.com/oauth/token?client_id='.$ID.'&code='.$code.'&client_secret='.$SECRET; curl_setopt($curl,CURLOPT_URL,$St); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // только так можно "обуть" защищенный режим с помощью cUrl*a curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // только так можно "обуть" защищенный режим с помощью cUrl*a curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); $stream = curl_exec($curl); $data = json_decode($stream); if($data->access_token){ $token = $data->access_token; $userId = $data->user_id; // Id пользователя который авторизовался } if($curl = curl_init()){ $url = 'https://api.vkontakte.ru/method/getProfiles?uids='.$userId.'&fields=photo_big,sex,bdate,screen_name&access_token='.$token; // теперь можно воспользоваться методом getPrifiles, где параметр fields принимает значение всех необходимых вам от пользователя данных. curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); $stream = curl_exec($curl); $data1 = json_decode($stream); $first_name = $data1->response[0]->first_name; // получаем фамилию пользователя $last_name = $data1->response[0]->last_name; // получаем имя пользователя $photo = $data1->response[0]->photo_big; // получаем авку пользователя $sex = $data1->response[0]->sex; // получаем пол пользователя $bdate = $data1->response[0]->bdate; // получаем дату рождения пользователя $login = $data1->response[0]->screen_name; // получаем логин пользователя $first_name = iconv('UTF-8', 'windows-1251', $first_name); $last_name = iconv('UTF-8', 'windows-1251', $last_name); } } } ?>Для лучшего закрепления информации о методе getProfiles, процитирую оф. документацию.
Возвращает информацию о пользователях в виде набора массива объектов, каждый из которых может иметь поля uid, first_name, last_name, nickname, sex, bdate (birthdate), city, country, timezone, photo, photo_medium, photo_big, photo_rec.
Если в параметре fields было указано поле contacts, то будут доступны также поля: home_phone, mobile_phone.
Если в параметре fields было указано поле education, то будут доступны также поля: university, university_name, faculty, faculty_name, graduation.
Если в параметре fields было указано поле counters, а в параметре uids задан только один идентификатор, то будет доступно поле counters в котором будет находится объект со счетчиками различных объектов у пользователя.
Значения uid, first_name и last_name возвращаются всегда, вне зависимости от выбранных полей и их количества.
Вот как-бы и все) И да, не забываем, что в настройках приложения нужно будет указать в форме "Адрес сайта" путь к обработчику, то есть site.ru/auth.php, к примеру.
Рейтинг:
+7
Просмотры: 3442Комментарии (9) »