Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2014-10-07 13:22:12

artoodetoo
Admin by chance
Зарегистрирован: 2008-09-09
Сообщений: 887
Сайт

Вход через Одноклассники (и другие сети)

Т.к. тема не совсем про fluxbb, пришлось даже создать новый раздел big_smile Это предварительная статья для тех, кто хочет использовать вход через сторонних провайдеров: Google|Facebook|VK и т.д.

Пользователь mabulma в теме Помогите сделать вход через одноклашки ok.ru дал ссылку на инструкцию

http://apiok.ru/wiki/pages/viewpage.act … d=42476652

правда он сам почему-то не сумел создать ключи. Сегодня я наконец-то добрался до этой задачки.

  • Создал аккаунт на ОК,

  • по ссылке в инструкции получил права разработчика (пришлось засветить телефон),

  • создал приложение.

ВАЖНО: сразу указывайте реальные email и URLы, потому что не всё можно исправить в будущем!

В полях формы приложения ввел по минимуму, без чего дальше не пускало smile Адресом приложения указал свой сайт, в списке допустимых полей для редиректа указал папку, где расположится скрипт авторизации. В итоге на емайл пришло письмо примерно такого содержания:

Здравствуйте, 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 вариантов неправильного написания слова "одноклассники" smile Скрипт распознает только правильный вариант.

			<legend>Or use anohter service</legend>
    		&nbsp;&nbsp;<a href="?route=authentications/authenticatewith/odnoklassniki">Sign-in with Odnoklassniki</a><br /> 

на этом с HybrydAuth закончили. По ссылке http: // mysite.com/examples/index.php кликаю пример Sign-in/Sign-up Users и в нем прекрасно работает аутентификация/регистрация через Одноклассники!

MLHTwIqHXKSdmniOjbauxNhmXb9oLq.png
afMo0hBMoqbBJRYMia674evgkVoOTH.png

Продолжение следует — будет про привязку HybridAuth к форуму.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Offline

#2 2014-10-07 14:13:18

artoodetoo
Admin by chance
Зарегистрирован: 2008-09-09
Сообщений: 887
Сайт

Re: Вход через Одноклассники (и другие сети)

Суть внешней авторизации такова:

  • Мы (наша программная библиотека) посылаем пользователя на специальный адрес внешнего Провайдера. при этом указывается "id приложения", которое мы создавали у Провайдера, а также адрес возврата

  • Пользователь подтверждает вход (мы не знаем как, ни внешнего логина, ни пароля мы не получаем — это дело Провайдера),

  • Провайдер передает Пользователя назад к нам на адрес возврата, при этом сообщает специальный "код" и статус успех/ошибка

  • С этим "кодом" и с известным нам "секретным ключем" мы (наша программная библиотека) запрашиваем нужную информацию с внешнего сервера

  • Если ошибок не было, мы можем создать свою авторизационную куку и Пользователь с этого момента будет залогиненным!

Прелесть готовых библиотек в том, что мы перекладываем на них самую непонятную часть работы. Для нас тонкости обмена информации с Провайдером остаются "черным ящиком". Нам достаточно просто знать, что авторизация у Провайдера успешно прошла big_smile


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens