Luffy1
@Luffy1
Student, Junior .NET programmer, C#, JS, HTML/CSS

Как сделать «Вход через Facebook»?

Я пользуюсь этой технологией впервые, поэтому, пожалуйста, без критики на тупизну - это всё-таки сообщество вопросов как-никак!
Я хочу сделать, чтобы при загрузке страницы у меня проверялось, входил ли пользователь в аккаунт или нет. Код из Facebook SDK для JavaScript:
FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
});

Первое, что нужно сделать при загрузке веб-страницы, — проверить, не вошел ли уже человек в ваше приложение с помощью «Входа через Facebook». Вызовите FB.getLoginStatus. На Facebook будет отправлен вызов для получения статуса входа, и будет активирована функция обратного вызова для предоставления результатов.
- написано на сайте по начале работы с этим. А вот код моей страницы, куда я этот код хочу вставить и вызвать:
@page "{handler?}"
@model Inst_Post_Searcher.Pages.LoginModel
<!DOCTYPE html>
<html>
<head>
    
</head>
<body>
    <script>
        window.fbAsyncInit = function () {
            FB.init({
                appId: '295566758542379',
                autoLogAppEvents: true,
                xfbml: true,
                version: 'v8.0'
            });
            FB.AppEvents.logPageView();
        };

        (function (d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0]; //<--Facebook JS SDK
            if (d.getElementById(id)) { return; }
            js = d.createElement(s); js.id = id;
            js.src = "https://connect.facebook.net/ru_RU/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));
    </script>
    <div class="tbody">
        <div class="title">
            <h1><nobr>Inst-Post Searcher</nobr></h1>
            <hr size="2" />
        </div>
        <div class="condition">
            <h2>@Model.Message</h2>
        </div>
        <form method="post">
            <div align="center">
                <input class="loginbutton" type="submit" value="Войти" />
            </div>
        </form>
    </div>
</body>
</html>

Дело в том, что я не изучал JavaScript, поэтому не понимаю где нужно вставить код
FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
});
, а также не знаю, где его надо вызвать.
Вот код моей модели:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;

namespace Inst_Post_Searcher.Pages
{
  public class LoginModel : PageModel
  {
    public string Message { get; set; }

    private readonly ILogger<LoginModel> _logger;

    public LoginModel(ILogger<LoginModel> logger)
    {
      _logger = logger;
    }

    public void OnGet()
    {
      Message = "Для использования приложения необходимо иметь уже зарегистрированный аккаунт в Instagram!";
    }

    public void OnPost()
    {
      
    }
  }
}

Вызовите FB.getLoginStatus. На Facebook будет отправлен вызов для получения статуса входа, и будет активирована функция обратного вызова для предоставления результатов.
Объект response, переданный обратному вызову, содержит несколько полей:
{
status: 'connected',
authResponse: {
accessToken: '...',
expiresIn:'...',
signedRequest:'...',
userID:'...'
}
}
- момент, когда мы уже отправили запрос. Но тут я тоже не остался без вопросов. Как и какую переменную и где мы должны создать и как передать в неё
Объект response
? Как после получения объекта response обратиться к полю status и проверить его в if and else? Где именно в коде моей страницы надо будет писать этот код? В каком теге?
Вот инфа про status:
status сообщает о состоянии входа человека в приложение. Состояние может принимать одно из следующих значений:
connected — человек выполнил вход на Facebook и в ваше приложение.
not_authorized — человек выполнил вход на Facebook, но не вошел в приложение.
unknown — человек не вошел на Facebook, поэтому неизвестно, выполнен ли вход в приложение, либо FB.logout() был вызван раньше и поэтому не может подключиться к Facebook.

authResponse будет добавлен, если статус — connected и состоит из следующих элементов:
accessToken — содержит маркер доступа для пользователя приложения.
expiresIn — указывает UNIX-время, когда срок действия маркера истечет и его нужно будет обновить.
signedRequest — параметр подписи, содержащий сведения о пользователе приложения.
userID — указывает ID пользователя приложения.

Когда состояние входа определено, можно выбрать один из следующих вариантов:
Если человек вошел на Facebook и в приложение, предоставьте ему возможность работать с приложением как зарегистрированному пользователю.
Если человек не вошел в приложение или на Facebook, предложите ему диалог «Вход» с элементом FB.login() или покажите кнопку «Вход».
- как осуществить второе "если"?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы