Авторизация на сайте через Facebook

Авторизация на сайте через Facebook
23.05.2012 Алексей Малыгин

Все эти форумы, порталы и торренты уже замучили регистрацией. Куда не ткнись — везде требуют зарегистрироваться и заполнить длиннющую форму, потому еще пойти на email и подтвердить аккаунт. Это ужасно бесит.

Ведь практически у каждого пользователя есть аккаунт хотя бы в одной социальной сети. Даже если он ей и не пользуется — не важно, но для регистрации и последующей авторизации на стороннем сайте вполне пригодится.

Конечно, проекты и задачи бывают разные, но в большинстве случае более чем достаточно использовать открытый протокол авторизации OAuth, который обеспечивают все популярные социальные сети.

Итак, рассмотрим пример авторизации пользователей на вашем сайте, используя Facebook. И все это без какой-либо регистрационной формы!

Для начала разберемся как это все работает в теории. Кстати, последующие пункты справедливы для большинства социальных сетей, а не только Facebook.

1. Создаем приложение в Facebook

2. Прописываем в настройках приложения сайт, для которого нужна авторизация

3. В настройках приложения Facebook находим идентификатор приложения и секретный ключ

4. Модуль авторизации на сайте перенаправляет пользователя на стандартный диалог авторизации Facebook

5. После авторизации Facebook делает редирект обратно на указанную страницу нашего сайта и передает необходимые данные, которые позднее будут участвовать во всех следующих запросах.

База данных

Очевидно, что авторизированных пользователей нужно где-то хранить. Предположим, вы уже создали базу данных и теперь очередь таблицы для хранения пользователей.

CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(70),
face_uid int(11),
username VARCHAR(100)
);

В файле dbconfig.php необходимо прописать настройки для подключения к БД нашего модуля.

define('DB_SERVER', 'сервер с БД');
define('DB_USERNAME', 'Имя пользователя БД');
define('DB_PASSWORD', 'Пароль');
define('DB_DATABASE', 'Имя БД');
$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
$database = mysql_select_db(DB_DATABASE) or die(mysql_error());

Создание приложения

Переходим по ссылке и создаем приложение в Facebook. В поле Website with Facebook Login не забудьте прописать URL сайта, для которого вы делаете авторизацию.

Полученные App ID и App Secret приложения прописываем в файле login.php вместо переменных APP_ID и SECRET_KEY.

Завершение

На этом все. Заливаем видоизмененные файлы на сервер с поддержкой PHP и СУБД MySQL и обращаемся к файлу index.php.

Скачать исходные коды

Просмотрев исходные коды, думаю у вас не должно возникнуть вопросов. Пример читабельный и вполне по силам новичкам. А вот если стоит задача «прикрутить» авторизацию через Facebook к какой-то CMS (WordPress, DLE, Joomla и пр.) — придется немного повозиться или воспользоваться уже готовыми решениями в виде плагинов.

  • Pingback: Авторизация на сайте через Facebook | Grabr()

  • Вячеслав Андреев

    Заработай на кредитах WebMoney, ставь ссылку и получай деньги! http://wmz24.com/

  • Игорь

    Здравствуйте, хотел отметить, что статья очень познавательная! Однако, при авторизации у меня возникает,видимо, ошибка. facebook бесконечно спаршивает: «Мы хотим убедиться, что ваш аккаунт в безопасности. Просто коснитесь «Да» ниже, если вы сейчас используете приложение newtest и хотите поделиться с ним своей информацией.» после нажатия кнопки «ДА» сообщение выскакивает снова. В чем ошибка, подскажите. Заранее благодарен.