Недавно для простоты комментирования я
сделал авторизацию из
vkontakte.ru. Для этого потребовалось не так много ресурсов и времени, сейчас для заинтересованных покажу, как это делается.
Во-первых, надо создать свое приложение. Можно не загружать SWF-файл, достаточно получить так называемый «секретный ключ» и идентификатор. Это делается вконтакте, на вкладке с приложениями.
Во-вторых, куда-то на сайте воткнуть кнопку «войти вконтакте» (я ее вынес на
отдельную страницу, нечего скриптами страницы блога нагружать).
Под приложение после логина установится куки вида
vk_app_ID-приложения. Осталось только ее «поймать» и разобрать:
$vk_auth=trim($_COOKIE["vk_app_ID-приложения"]);
$secret_id='секр-ключ-приложения';
$vk=explode("&",$vk_auth);
$md5_vk=md5($vk[0].$vk[1].$vk[2].$vk[3].$secret);
list($a,$vk_login)=explode("=",$vk[1]);
$vk=explode("=",$vk[4]);
if ($md5_vk==$vk[1]) { // если подпись сходится...
$api_id = "ID_приложения";
$method = "getProfiles";
$uids=$vk_login;
$v="3.0";
// сигнатура для проверки
$sig=md5("api_id=".$api_id."method=".$method."uids=".$uids."v=".$v.$secret_id);
$e="http://api.vkontakte.ru/api.php?api_id=".$api_id."&method=".$method."&uids=".$uids."&v=".$v."&sig=".$sig;
// посылаем запрос, чтобы получить данные о пользователе
$p=file_get_contents($e);
}Все, в принципе, описано
в документации, но там не указан один забавный нюанс: параметры нужно передавать
в алфавитном порядке. Почему - без понятия. Но это факт, я часа два получал от Вконтакта ошибку, пока мне не пришла в голову бредовая мысль выстроить параметры по алфавиту. В следующий раз я сделаю логин из
Фейсбука. Надеюсь, там такого шаманства не будет.