Модуль позволяет пользователям авторизироваться через:
Пользователь, авторизовавшись через один из этих сервисов попадает в базу пользователей вашего сайта, в последствие он может задать себе логин/пароль или изменить профайл (например, сменить аватар).
Настройка такого типа авторизации происходит через настройки модуля «Личный кабинет» - «Регистрация и Авторизация» - «Через внешние сервисы». Для каждого сервиса задается:
Действие перед первой авторизацией содержит 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