Зачем нужна авторизация на вашем сайте через Facebook?
На данный момент в социальной сети Facebook более 500 млн. пользователей. Многие сайты предоставляют возможность авторизироваться без дополнительной регистрации, где нужно заполнять много полей информации о себе. Если у вас есть аккаунт на Facebook, то вам достаточно войти на сайт используя его. Это экономит время, ведь регистрация нередко требует потратить минут 5-10.
Если вы реализуете авторизацию через Facebook, то скорее всего сможете получить больше пользователей на сайте, ведь не каждому хочется проходить этап регистрации ради написания нескольких комментариев.
Итак, приступим…
Перед созданием приложения необходимо зарегистрировать ваш сайт на Facebook
developers.facebook.com/setup
После регистрации вы получите 2 ключа: App ID и App Secret.
А теперь создадим новое приложение ASP.NET MVC 3.
Нам придется работать с Json, поэтому библиотеку вы можете скачать тут и подключить в проекту:
Или воспользоваться менеджером пакетов NuGet и написать "
Для начала подгружаем JavaScript SDK на нашу страницу.
Далее инициализируем нашу страницу при помощи App Id, который был получен при регистрации домена на Фейсбуке.
Отобразим кнопку входа через Facebook на странице сайта.
Здесь используется пространство имен
Сгенерировать кнопку можно тут.
Событие onlogin кнопки fb-button вызывается после подтверждения или отмены авторизации в всплывающем окне
На событие onlogin вызывается метод onConnect(), в котором мы получаем
access_token.
Это ключ можно использовать для получения информации о пользователе. Вызывается метод FbLogin() контроллера AccountController, который получает информацию о пользователе:
Какую информацию можно получить у пользователя можно посмотреть тут.
Весь код _LogOnPartial.cshtml:
До авторизации:
После авторизации:
На данный момент в социальной сети Facebook более 500 млн. пользователей. Многие сайты предоставляют возможность авторизироваться без дополнительной регистрации, где нужно заполнять много полей информации о себе. Если у вас есть аккаунт на Facebook, то вам достаточно войти на сайт используя его. Это экономит время, ведь регистрация нередко требует потратить минут 5-10.
Если вы реализуете авторизацию через Facebook, то скорее всего сможете получить больше пользователей на сайте, ведь не каждому хочется проходить этап регистрации ради написания нескольких комментариев.
Итак, приступим…
Перед созданием приложения необходимо зарегистрировать ваш сайт на Facebook
developers.facebook.com/setup
После регистрации вы получите 2 ключа: App ID и App Secret.
А теперь создадим новое приложение ASP.NET MVC 3.
Нам придется работать с Json, поэтому библиотеку вы можете скачать тут и подключить в проекту:
using Newtonsoft.Json.Linq;
Или воспользоваться менеджером пакетов NuGet и написать "
Install-Package Newtonsoft.Json
"Для начала подгружаем JavaScript SDK на нашу страницу.
Copy Source | Copy HTML
- $(document).ready(function () {
- if (document.getElementById('fb-root') != undefined) {
- var e = document.createElement('script');
- e.type = 'text/javascript';
- e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
- e.async = true;
- document.getElementById('fb-root').appendChild(e);
- }
- });
Далее инициализируем нашу страницу при помощи App Id, который был получен при регистрации домена на Фейсбуке.
Copy Source | Copy HTML
- FB.init({
- appId:'YOUR_APP_ID', cookie:true,
- status:true, xfbml:true
- });
Отобразим кнопку входа через Facebook на странице сайта.
Copy Source | Copy HTML
- <fb:login-button perms="email,user_checkins"
- onlogin="onConnect();" autologoutlink="false">
- </fb:login-button>
Здесь используется пространство имен
xmlns:fb="http://www.facebook.com/2008/fbml"
.Сгенерировать кнопку можно тут.
Событие onlogin кнопки fb-button вызывается после подтверждения или отмены авторизации в всплывающем окне
На событие onlogin вызывается метод onConnect(), в котором мы получаем
access_token.
Copy Source | Copy HTML
- function onConnect() {
- FB.getLoginStatus(function (response) {
- if (response.session) {
- window.location = "../Account/FbLogin?token=" + response.session.access_token;
- } else {
- // if user cancel
- }
- });
- };
Это ключ можно использовать для получения информации о пользователе. Вызывается метод FbLogin() контроллера AccountController, который получает информацию о пользователе:
Copy Source | Copy HTML
- public ActionResult FbLogin(string token)
- {
- WebClient client = new WebClient();
- string JsonResult = client.DownloadString(string.Concat("https://graph.facebook.com/me?access_token=", token));
- JObject jsonUserInfo = JObject.Parse(JsonResult);
- UInt64 facebook_userID = jsonUserInfo.Value<UInt64>("id");
- string username = jsonUserInfo.Value<string>("username");
- string email = jsonUserInfo.Value<string>("email");
- //можем сохранить эту информацию
- FormsAuthentication.SetAuthCookie(username, true);
- return RedirectToAction("Index", "Home");
- }
Какую информацию можно получить у пользователя можно посмотреть тут.
Весь код _LogOnPartial.cshtml:
Copy Source | Copy HTML
- @if (Request.IsAuthenticated)
- {
- <text>Welcome <strong>@User.Identity.Name</strong>! [ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text>
- }
- else
- {
- <fb:login-button perms="email,user_checkins" onlogin="onConnect();" autologoutlink="false"></fb:login-button>
- <div id="fb-script" st yle="display: inline; margin-left: 20px;">
- </div>
- @:[ @Html.ActionLink("Log On", "LogOn", "Account") ]
- }
- <script language="javascript" type="text/javascript">
- window.fbAsyncInit = function () {
- FB.init({ appId: '177572352298948', status: true, cookie: false, xfbml: true });
- };
- function afterConnect() {
- FB.getLoginStatus(function (response) {
- if (response.session) {
- window.location = "../Account/FbLogin?token=" + response.session.access_token;
- } else {
- // if user cancel
- }
- });
- };
- $(document).ready(function () {
- if (document.getElementById('fb-root') != undefined) {
- var e = document.createElement('script');
- e.type = 'text/javascript';
- e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
- e.async = true;
- document.getElementById('fb-root').appendChild(e);
- }
- });
- </script>
До авторизации:
После авторизации: