После недолгих поисков решения сложившейся проблемы вспомнил про замечательный сервис loginza.ru.
Ну и решил написать класс для роботы с этим сервисом.
Вот пример:
$json = new Services_JSON;
$loginza = new Loginza($json);
$loginza->setReturnPath('http://ridersx.no-ip.biz/ufo/openid/example.php');
$loginza->setProviders(array('google', 'yandex', 'vkontakte'));
if($loginza->inProgress()) {
$info = $loginza->getAuthInfo();
echo 'Hello '.$loginza->getUserName($info);
} else {
/*
echo $loginza->getWidgetTextPopup('Sign in with OpenID');
echo $loginza->getWidgetFrame();
echo $loginza->getWidgetIcons();
*/
echo $loginza->getWidgetButtonPopup('Sign in with OpenID');
}
Для работы класса нужно задать путь на который произойдет редирект после успешной авторизации у провайдера,
а так же можно задать провайдеров через которых пользователю будет позволено авторизоваться.
Коих
Есть несколько видов виджетов, их можно посмотреть тут, как их вызвать можно посмотреть в примере.
Данные от провайдеров возвращаются в виде объекта, данные можно получить вот так: $loginza->getAuthInfo();
В остальном думаю понятно как работать с классом :) Если что непонятно - дополню топик