Модуль позволяет пользователям авторизироваться через:
Пользователь, авторизовавшись через один из этих сервисов попадает в базу пользователей вашего сайта, в последствие он может задать себе логин/пароль или изменить профайл (например, сменить аватар).
Настройка такого типа авторизации происходит через настройки модуля «Личный кабинет» - «Регистрация и Авторизация» - «Через внешние сервисы». Для каждого сервиса задается:
Действие перед первой авторизацией содержит php-код, который выполнится до того, как пользователь будет авторизирован и занесен в базу пользователей сайта. PHP-код следует указывать без открывающих и закрывающих тегов. В этом блоке доступны переменные и массивы:
Параметр | Описание |
---|---|
$ex_user_id | идентификатор пользователя в сервисе, по которому идет авторизация ( например, в ВКонтакте — это номер, в OpenID – логин) |
$userinfo | массив с данными о пользователе, который передал сервис |
$nc_core | системный объект класса nc_Core |
Действие после первой авторизации содержит php-код, который выполнится после того, как пользователь будет авторизирован и занесен в базу пользователей сайта. PHP-код следует указывать без открывающих и закрывающих тегов. В этом блоке доступны переменные и массивы:
Параметр | Описание |
---|---|
$user_id | номер пользователя в системе NetCat |
$ex_user_id | идентификатор пользователя в сервисе, по которому идет авторизация ( например, в ВКонтакте — это номер, в OpenID – логин) |
$userinfo | массив с данными о пользователе, который передал сервис |
$nc_core | системный объект класса nc_Core |
Сервисы могут передавать некоторую информацию о пользователе (например, ник, имя, фамилия, фотография, эл. почта). Эту информацию можно записать в профайл авторизированного пользователя, для этого есть блок «Соответствие полей».
Примечание. Данные о пользователе от сервиса могут и не передаваться, все зависит от самого сервиса, а так же пользователь может запретить передавать информацию о нем стороннему сайту.
Более подробно о встраивании форм авторизации через внешние сервисы можно прочитать в описании функции $nc_auth->auth_form()
Для того, чтобы пользователи могли авторизоваться на вашем сайте через Вконтакте, необходимо сначала зарегистрировать приложение на сайте vk.com. На момент написания документации ссылка на добавление приложения была такая: https://vk.com/editapp?act=create
Заполните требуемые поля:
После регистрации приложения вы получите ID приложения и защищённый ключ:
Скопируйте эти параметры и вставьте в настройки модуля в поля ID приложения и защищенный ключ в области «Вконтакте»:
После чего на сайте можно будет авторизоваться через vk.com.
Если для вывода формы авторизации вы используете метод $nc_auth->auth_form() (макропеременная %vk_form), то он автоматически покажет кнопку «Войти через Вконтакте»:
При использовании своей формы авторизации можете воспользоваться следующим кодом для показа кнопки «авторизоваться через Вконтакте»:
<div id='login_button' class='vk_login_button' onclick='nc_vk_login(<?= $nc_auth_vk->is_member(); ?>)'></div> <script src='http://vk.com/js/api/openapi.js' type='text/javascript'></script> <script type='text/javascript'> function nc_vk_login ( is_member ) { var is_mem = is_member || 0; if ( !is_mem ) VK.Auth.login( nc_vk_login ); else location.href='<?= $nc_core->SUB_FOLDER.$nc_core->HTTP_ROOT_PATH; ?>modules/auth/?nc_vk=1&REQUESTED_FROM=<?= htmlspecialchars($REQUEST_URI,ENT_QUOTES ); ?>'; } VK.init({ apiId: <?= $nc_auth_vk->get_app_id(); ?> }); VK.UI.button('login_button'); </script>
По аналогии с авторизацией через Вконтакте, Вам надо предварительно создать новое приложение на сайте facebook.com. На момент написании документации (30.09.2014) это можно было сделать по ссылке https://developers.facebook.com/quickstarts/?platform=web (версия API 2.1).
В окне введите адрес сайта и нажмите кнопку создания нового приложения
На следующем шаге укажите категорию приложения.
После создания приложения в разделе "Клиентские настройки OAuth" вы должны указать в поле "Действительные URI перенаправления для OAuth" следующие адреса:
https://example.com/netcat/modules/auth/?nc_fb=1 https://example.com/netcat/modules/auth/endpoint/?hauth_done=Facebook
Затем вы можете зайти в меню Apps → ваше приложение и на открывшейся странице получить номер приложения (App ID) и его секретный ключ (App Secret).
Эти параметры нужно добавить в настройки модуля:
После сохранения настроек пользователи смогут регистрироваться и авторизовываться на сайте через Facebook
Если для вывода формы авторизации вы используете метод auth_form (макропеременная %fb_form), то он автоматически покажет кнопку «facebook Войти»:
При использовании своей формы авторизации можете воспользоваться следующим кодом для показа кнопки авторизации:
<?php echo " <div id='fb-root'></div> <fb:login-button>Войти</fb:login-button> <script type='text/javascript'> window.fbAsyncInit = function() { FB.init({ appId: ".$nc_auth_fb->get_app_id().", status: false, cookie: false, xfbml: true, oauth: true}); function updateButton(response) { if (response.authResponse) { location.href = '".$nc_core->SUB_FOLDER.$nc_core->HTTP_ROOT_PATH."modules/auth/?nc_fb=1&token='+response.authResponse.accessToken+'&REQUESTED_FROM=".htmlspecialchars($REQUEST_URI, ENT_QUOTES)."'; } else { var button = document.getElementById('fb-auth'); button.onclick = function() { FB.login(function(response) { if (response.authResponse) { location.href = '".$nc_core->SUB_FOLDER.$nc_core->HTTP_ROOT_PATH."modules/auth/?nc_fb=1&token='+response.authResponse.accessToken+'&REQUESTED_FROM=".htmlspecialchars($REQUEST_URI, ENT_QUOTES)."'; } else { //error } }, {scope:'email'}); } } } FB.Event.subscribe('auth.statusChange', updateButton); }; (function(d){ var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} js = d.createElement('script'); js.id = id; js.async = true; js.src = \"//connect.facebook.net/ru_RU/all.js\"; d.getElementsByTagName('head')[0].appendChild(js); }(document)); </script>"; ?>
Для авторизации через твиттер Вам необходимо создать новое приложение по ссылке ( действительна на момент написания документации): https://apps.twitter.com/app/new
В первом окне заполните необходимые поля: название приложения, описание и адрес сайта. После успешной регистрации приложения, вы получите API key и API secret:
Скопируйте эти параметры и вставьте в настройки модуля:
Примечание: В настройках twitter-приложения параметр Callback URL должен быть заполнен значением вида "http://имя.сайта/netcat/modules/auth/?nc_twitter=1".
Теперь, чтобы пользователь авторизовался через твиттер, ему нужно пройти по ссылке
/netcat/modules/auth/?nc_twitter=1
То есть форму авторизации можно сделать так:
<a href='/netcat/modules/auth/?nc_twitter=1'> <img src='Путь до значка твиттера' alt='Авторизоваться через твиттер' /> </a>
Форма авторизации через Twitter в форме авторизации пользователя выводится при помощи макропеременной %twitter_form
В разделе авторизации через openid, вы можете добавлять или удалять провайдеров, с помощью которых необходимо настроить авторизацию.
По умолчанию в системе уже добавлены Google, Mail.ru, Yandex и MyOpenID.
Для каждого сервиса необходимо указать OpenID URL, для сервисов по умолчанию - подставить свои параметры в ссылки для авторизации в соответствующих полях.
Форма авторизации по openid в форме авторизации пользователя выводится при помощи макропеременной %openid_form
Комментарии 3