Как сделать "Вход через 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() или покажите кнопку «Вход».
Как осуществить второе "если"?