Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Т.к. тема не совсем про fluxbb, пришлось даже создать новый раздел Это предварительная статья для тех, кто хочет использовать вход через сторонних провайдеров: Google|Facebook|VK и т.д.
Пользователь mabulma в теме Помогите сделать вход через одноклашки ok.ru дал ссылку на инструкцию
http://apiok.ru/wiki/pages/viewpage.act … d=42476652
правда он сам почему-то не сумел создать ключи. Сегодня я наконец-то добрался до этой задачки.
Создал аккаунт на ОК,
по ссылке в инструкции получил права разработчика (пришлось засветить телефон),
создал приложение.
ВАЖНО: сразу указывайте реальные email и URLы, потому что не всё можно исправить в будущем!
В полях формы приложения ввел по минимуму, без чего дальше не пускало Адресом приложения указал свой сайт, в списке допустимых полей для редиректа указал папку, где расположится скрипт авторизации. В итоге на емайл пришло письмо примерно такого содержания:
Здравствуйте, John Doe!
Ваше приложение Test John Doe успешно зарегистрировано на Odnoklassniki.ru.
Application ID: 1104201333.
Публичный ключ приложения: CBAKMBNCEBABABFFF.
Секретный ключ приложения: AE24A4F523B0812F2ACABFFF.
Ссылка на приложение: http://www.odnoklassniki.ru/games/testjohndoe
Этот ключ необходим для изменения настроек приложения и для подписи/верификации запросов от Вашего приложения. Более подробная информация содержится в документации к програмному интерфейсу сайта Odnoklassniki.ru.
--
С уважением,
Служба поддержки Odnoklassniki.ru
Из этого всего мне понадобятся только
ID,
ключ и
секрет.
Для проверки работоспособности OAuth я загрузил библиотеку HybridAuth с примерами. Ее можно найти по адресу https://github.com/hybridauth/hybridauth , есть вторая и третья версии, но адаптер Одноклассников присутствует только во второй, поэтому берем её.
Заливаем все файлы на хостинг (его домен мы указывали при регистрации приложения).
ВАЖНО: адаптер для Одноклассников не входит в стандартный набор HybridAuth, но его можно найти в дополнительных. Достаточно скопировать один файл
/additional-providers/hybridauth-odnoklassniki/Providers/Odnoklassniki.php
в
/hybridauth/Hybrid/Providers/
В конфигурационном файле /hybridauth/config.php добавляем раздел про Одноклассники, все лишнее можно удалить, а можно не трогать:
return
array(
"base_url" => "http://mysite.com/hybridauth/index.php",
"providers" => array (
// openid providers
"OpenID" => array (
"enabled" => false
),
"Yahoo" => array (
"enabled" => false,
"keys" => array ( "key" => "", "secret" => "" ),
),
"AOL" => array (
"enabled" => false
),
"Odnoklassniki" => array (
"enabled" => true,
"keys" => array ( "id" => "1104201333", "key" => "CBAKMBNCEBABABFFF", "secret" => "AE24A4F523B0812F2ACABFFF" ),
),
"Google" => array (
...
),
),
"debug_mode" => false,
"debug_file" => "",
);
Также для работы примера нужна БД. Смотрим /examples/signin_signup/database.sql и создаем на хостинге две таблицы.
Параметры соединения с БД прописываем в /examples/signin_signup/application.config.php
Остается только дать ссылку на авторизацию через ОК, т.к. в шаблоне ссылки прописаны статически, а не берутся из конфига.
Правим шаблон формы входа: /examples/signin_signup/application/views/users/login.html
находим строчку с "Google", копируем ее и меняем в двух местах на odnoklassniki. Будте внимательны, не опечатайтесь. Яндекс утверждает, что распознает 11000 вариантов неправильного написания слова "одноклассники" Скрипт распознает только правильный вариант.
<legend>Or use anohter service</legend>
<a href="?route=authentications/authenticatewith/odnoklassniki">Sign-in with Odnoklassniki</a><br />
на этом с HybrydAuth закончили. По ссылке http: // mysite.com/examples/index.php кликаю пример Sign-in/Sign-up Users и в нем прекрасно работает аутентификация/регистрация через Одноклассники!
Продолжение следует — будет про привязку HybridAuth к форуму.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline
Суть внешней авторизации такова:
Мы (наша программная библиотека) посылаем пользователя на специальный адрес внешнего Провайдера. при этом указывается "id приложения", которое мы создавали у Провайдера, а также адрес возврата
Пользователь подтверждает вход (мы не знаем как, ни внешнего логина, ни пароля мы не получаем — это дело Провайдера),
Провайдер передает Пользователя назад к нам на адрес возврата, при этом сообщает специальный "код" и статус успех/ошибка
С этим "кодом" и с известным нам "секретным ключем" мы (наша программная библиотека) запрашиваем нужную информацию с внешнего сервера
Если ошибок не было, мы можем создать свою авторизационную куку и Пользователь с этого момента будет залогиненным!
Прелесть готовых библиотек в том, что мы перекладываем на них самую непонятную часть работы. Для нас тонкости обмена информации с Провайдером остаются "черным ящиком". Нам достаточно просто знать, что авторизация у Провайдера успешно прошла
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline