Авторизация через ВКонтакте, Mail.ru и другие для самых начинающих — 1
На хабре и других ресурсах есть туториалы, однако в каждом упущен какой-нибудь незначительный момент, вопросы по которому можно видеть на различных форумах. Так как недавно столкнулся с задачей подружить один сайт с Контактиком и Майл.ру, то решил, пока свежа память, сделать свое небольшое руководство с блэкджеком так сказать, используя родные виджеты этих социальных сетей.
Итак, начнем с ВКонтакте. Заходим на страницу подключения сайта, в дальнейшем настройки подключенного сайта будут доступны вам на странице управления приложениями, там мы узнаем ID приложения и секретный ключ, который естественно раскрывать никому нельзя.
На странице, на которой предполагается кнопочка «Войти через ВКонтакте» требуется добавить в head страницы
И инициализировать приложение:
Теперь нужно показать пользователю кнопку через вызов виджета. В качестве параметров Auth принимает id элемента, в который нужно отобразить виджет, ширину и адрес страницы, куда мы будем перенаправлены после попытки доступа.
VK ID: путь от фичи до единой учётной записи для всех сервисов | Василий Яцевич
< script type =»text/javascript» >
VK.Widgets.Auth( «vk_auth» , );
Что увидит пользователь:
После щелчка на «Войти через ВКонтакте» пользователя кидает на страницу вида vkontakte.ru/widget_auth.php?act=a_auth_userhash=d2d47b3c85d1a091a8, затем на url, указанный вами в параметре AuthUrl при вызове виджета. Кидает со следующими GET параметрами:
first_name (имя), hash (используется для проверки того действительно ли запрос пришел от контакта, а не хакер Вася пытается авторизоваться под чужими данными), last_name (Фамилия), photo (большая аватарка, 119 пикселей шириной), photo_rec (маленькая аватарка, 50х50), uid (id пользователя). Пришедшие к нам параметры я после фильтрации сохранил с такими же именами в глобальной области видимости.
Теперь нам нужно сделать скрипт vklogin.php, в котором мы будем проверять правильность пришедших данных и, либо авторизовывать пользователя если он уже есть в нашей базе, либо создавать новый аккаунт для пользователя зашедшего к нам впервые.
if ($_REQUEST[ ‘hash’ ]==md5( ‘2445355’ .$uid. ‘__SECRET_KEY__’ )) //доверяем вконтактику, и далее полагаем, что пользователь действительно авторизован там
//для учетных записей пользователей я решил выделить логины вида vk-********
$result = mysql_query( «SELECT id, random, password FROM tracker_users WHERE username = ‘vk-$uid'» );
setcookie( ‘uid’ , » );
setcookie( ‘pass’ , » );
if (mysql_num_rows($result)) //пользователь авторизован, просто пересоздадим куки
$user = mysql_fetch_assoc($result);
mysql_query( «UPDATE tracker_users SET name = ‘$name’ WHERE username = ‘vk-$uid’ LIMIT 1» );
setcookie( ‘pass’ ,md5($user[ ‘random’ ].$user[ ‘password’ ].$user[ ‘random’ ]));
setcookie( ‘uid’ ,$user[ ‘id’ ]);
> else //добавим запись в таблицу пользователей
$random = mt_rand(100000,999999);
$pwd = $uid . ‘verysecretlonglongword-‘ ;
$pid=md5(uniqid(rand(), true ));
mysql_query( «INSERT INTO tracker_users
(username, name, password, random, id_level, email, style, language, flag, joined, lastconnect, pid, time_offset) VALUES
(‘vk-$uid’, ‘$name’, ‘» . md5($pwd) . «‘, $random, 3, », 5, 7, 0, NOW(), NOW(),’$pid’, ‘0’)» );
//вставили строчку, теперь создадим куки и перебросим на другую страницу
setcookie( ‘pass’ ,md5($random.md5($pwd).$random));
setcookie( ‘uid’ ,mysql_insert_id());
>
header( «Location: /index.php» );
>
Как зайти на свою страницу ВКонтакте?
* This source code was highlighted with Source Code Highlighter .
На сайте, на котором мне необходимо было сделать авторизацию в куках сохраняется id пользователя и хеш от соли и хеша пароля. Решение, конечно, не идеальное, но менять полностью весь движок в мои планы не входило. Если пользователь у нас уже есть мы его авторизуем, создав куки, если он впервые, то добавляем его в базу. Также при каждом заходе мы обновляем данные об именах, потому что пользователь мог его поменять, а мы хотим актуальности.
Кроме этого необходимо перед началом использования подобной авторизации убедиться, что в базе нет пользователей с логинами вида vk- (или с теми, которые вы хотите использовать). Также необходимо запретить регистрироваться через обычную регистрацию используемого движка с логинами вида vk- и запретить пользователям из социальной сети менять себе пароль и, опционально, аватарку с отображаемым именем. Для сайтов, в которых критично использование электронной почты зарегистрированных пользователей необходимо будет также ознакомить ваш движок с тем фактом, что у этих пользователей нет электронной почты.
Опционально можно возле каждого вывода имени пользователя на сайте отдельно выделять, что он авторизовался через социальную сеть:
Если уровень и тематика статьи интересна хабрапользоватям, то я продолжу с майл.ру, facebook и твиттером.
Вторая часть. Mail.ru
Источник: habr.com
Совет 1: Как зайти на свою страницу ВКонтакте с одним id
Изредка появляются обстановки, когда пользователь по ряду причин (из-за взлома, блокировки страницы) не может выйти на личную страницу в общественной сети. Впрочем это еще не причина для расстройства: восстановить доступ к индивидуальной странице дозволено, применяя личный ID.
Вам понадобится
- – регистрация «Вконтакте».
Инструкция
1. ID – особый идентификационный номер, тот, что присваивается всякому пользователю «Вконтакте» при регистрации. По нему дозволено без специального труда восстановить доступ к своей странице.
2. Для возвращения своего аккаунта при помощи идентификационного номера перейдите на страницу поправления доступа по адресу http://vk.com/restore и выберите внизу пункт «нажмите сюда». Позже чего вам будет предложено ввести номер своей страницы, тот, что желанно запомнить заблаговременно, и заполнить особую анкету, указав в ней свой телефон, электронный адрес и ряд других данных. Если открывшийся в следующем окне профиль ваш, перейдите на него.
3. Если с сайтом нет никаких загвоздок, но вы не хотите применять для входа в аккаунт логин и пароль, довольно будет указания вашего идентификационного номера – ID. В своем браузере в адресной строке введите следующую комбинацию http://vk.com/id и без пробела добавьте к ней свой номер. У вас должен получиться адрес: http://vk.com/idХХХХХХ, где ХХХХХХ – ваш ID. Сейчас можете отважно переходить на свою страницу и продолжать общение с друзьями.
4. Зная сторонний ID, также дозволено посетить и аккаунты сторонних людей. Метод действия – что и при входе на свою страницу «Вконтакте». Добавляйте идентификационный номер пользователя – и вы теснее у него «в гостях».
5. Дабы узнать id пользователя, необходимо зайти к нему на страницу и наблюдательно посмотреть на адрес в строке состояния вашего браузера. Число, располагающееся позже букв id, и будет желанным идентификационным номером.
Совет 2: Как восстановить доступ к странице
Обстановка, когда пользователь не может войти на личную страницу в общественной сети, – неприятная, но абсолютно решаемая. Чай фактически неизменно доступ к аккаунту дозволено возобновить. Основное – отчетливо исполнять инструкцию по поправлению.
Вам понадобится
- Доступ к аккаунту в общественной сети.
Инструкция
1. Вход на сайт в общественной сети блокируется по ряду причин. Особенно распространенные среди них – ввязывание мошенников, которые могут просто украсть ваш пароль и «похозяйничать» на вашей странице , либо рассылка спама. В том числе многообразные «письма счастья», признания в дружбе, отправка пожеланий, предложения о бесплатных презентах и высоких оценках.
Как водится, в таких сообщениях есть приписка, что это письмо надобно отправить каждому своим друзьям. Ни в коем случае не осуществляйте данную рассылку! Из-за бесчисленных претензий на поступающий от вас спам администрация может заблокировать ваш аккаунт.
2. Но даже если соблюдая эти советы вы потеряли доступ к странице , все поправимо. Для поправления аккаунта, как водится, довольно поменять пароль. Эта процедура не займет у вас много времени.
3. Для начала зайдите на домашнюю страницу вашего сайта. В окне ввода персональных данных обнаружьте ссылку «Позабыли пароль» (в зависимости от сети данная надпись может несколько различаться). Кликните по ней и перейдите на следующую страницу.
4. Дальше вам необходимо будет следовать рекомендациям мастера поправления. Первым шагом фактически на большинстве сайтов является вступление в особое поле используемого для входа логин.
5. В дальнейшем окне укажите результат на контрольный вопрос. Как водится, правильно сделать это сумеете только вы, и очередным этапом будет вступление в особое поле нового пароля. Его придется продублировать еще раз в соседней строке. Позже внесения исправлений в учетные записи, сбережете метаморфозы, вернитесь на домашнюю страницу и введите обновленные данные в соответствующие поля.
6. По ходу процедуры поправления на некоторых сайтах для перехода на следующую страницу от вас может понадобиться ввести указанный на картинке код.
7. Еще дюже комфортно привязывать к странице номер своего телефона. В этом случае восстановить аккаунт будет гораздо проще. А позднее вы получите на свой мобильный телефон новые данные учетной записи.
Видео по теме
Полезный совет
Никому не уведомляйте свой логин и пароль. Дабы не позабыть учетные записи, сбережете их в отдельном документе.
Источник: jprosto.ru