В атаче.
Сразу говорю - класс не мой. Я его немного поменял ибо изначально был сделан не удобно на мой взгляд.
Еще при включенном опенбейсдир или сейф мод вылетал варнинг, при этом при правильном указании опенайди все работало бы (а так хеадерс олреди сент). В общем собаку поставил.
Пример:
<?php
header('Content-type: text/html; charset=utf-8');
require_once "include/class_openid.php";
try {
if(!isset($_GET['openid_mode'])) {
if(isset($_POST['openid'])) {
$openid = new LightOpenID;
$openid->setId( $_POST['openid'] );
$openid->redirect();
}
?>
<form action="" method="post">
OpenID: <input type="text" name="openid" /> <input type="submit" value = "Гоу" />
</form>
<?php
} elseif($_GET['openid_mode'] == 'cancel') {
echo 'Хуй!';
} else {
$openid = new LightOpenID;
echo 'Юзер ' . ($openid->validate() ? $openid->getId() . ' ' : 'не ') . 'авторизовался.';
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
Бонус.
Несколько OpenID сайтов, где не нужно вводить свои логины. То есть ваш опенайди постоянен и его можно инпут хидден загнать.
http://openid.yandex.ru/
https://www.google.com/accounts/o8/id
https://me.yahoo.com/
https://myvidoop.com/
https://pip.verisignlabs.com/
VkOpenApi класс
Класс в атаче.
Класс мой. Хотя идею одной проверки высмотрел в другом подобном классе. Но он откровенно слабый.
Пример.
<?php
header('Content-type: text/html; charset=utf-8');
require_once "openapi.class.php";
$vk = new VkOpenApi('12345', 'password', 'openapi.example.php'); //12345 - айди приложения, password - ваш пароль
if ($vk->isAuth()) {
echo "Твой вконтактовский айди: " . $vk->isAuth();
} elseif ($_GET['action'] == 'receiver') {
$vk->drowReceiver();
} else {
echo "Фирменная кнопка от ВКонтакте: " . $vk->drowVkButton() . "<br />";
echo "Фирменная кнопочка от HTML: " . $vk->drowYorButton('<button>Вконтакте</button>');
}
Методы:
__construct ($appId, $appPass, $openIdFile):
$appId }
} ID и Пароль вашего приложения вконтакте. Подробенее: http://vkontakte.ru/developers.php?o=-1&p=Open+API
$appPass }
$openIdFile файл на который прийдет результат после авторизации.
isAuth():
проверяет авторизовался ты вконтакте или нет. Если авторизовлся, то возвращает ID. Если не авторизован, то false.
getId():
Возвращает ID вконтакте, если человек авторизован иначе false.
Отличается от isAuth тем, что это не проверка аторизованнности, а плучение id.
То есть результаты тут как бы кешируются :)
logout():
Чистит вконтактовскую куку
drowVkButton():
Возваращает фирменную вконтактовскую кнопку "Войти ВКонтакте". Скрипты тоже возвращаюся.
drowYorButton($button):
$button - хтмл код кнопки. При клике на нее будет заходить вконтакт.
drowReceiver():
Вырисовывает служебную страницу. Ее нужно вырисвывать если ваш обратный файл указанный в конструкторе получил $_GET['action'] = 'receiver';
До нее лучше ничего не выводить. Не знаю как он себя в таком случае поведет.