У Яндекса есть один оч замечательный проект по идентификации пользователей на сайте при помощи OpenID — Loginza.ru
Понятное дело, насколько нудно для пользователя каждый раз на на разных сайтах регистрировать свою учётную запись. Сервис Loginza призван унифицировать процесс идентификации(регистрации) пользователей за счёт наличия их аккаунта в популярных социальных сетях, а также сайтах поддерживающих OpenID.
Кстати, пока изучал этот сервис в нескольких местах, причём на разных страницах, заметил фразу — «секрытный ключ». Не могу понять, — это новый термин или действительно опечатка. Если второе, то молодцы кодеры яндекса, используют константы)))
Итак, как юзать. Для начала неплохо бы зарегится на этом сервисе посредством, опять же, OpenID))). У меня процедура регистрации заняла около минуты. Регистрация необходима для того, чтобы добавить свой сайт в систему и получить более безопасную передачу данных, а также возможность просмотра статистики использования идентификации.
На странице, где будет ссылка(кнопка для входа):
$url_auth = urlencode("http://vitaly.by/auth"); $providers = "vkontakte"; // можно через запятую "google, yandex, mailruapi, mailru, vkontakte, facebook..."
Войти через "ВКонтакте"
Обмен данными осуществляется в четыре этапа:
Исходный код файла авторизации:
$widget_id = 1234; // ваш id loginza $secret_key = "b22ae2ee978251658b0ddb9346fbb"; // ваш секретный ключ loginza $api_sign = md5($_POST['token'].$secret_key); $url = "http://loginza.ru/api/authinfo?token={$_POST['token']}&id={$widget_id}&sig={$api_sign}"; $response = file_get_contents($url); $array = json_decode($response, 1); // получаем массив данных о пользователе print_r($array); // посмотрим этот массив
Думаю, что всё предельно ясно. Такую авторизацию я сделал на одном из своих проектов. Очень даже ничего.