Я пользуюсь этой технологией впервые, поэтому, пожалуйста, без критики на тупизну - это всё-таки сообщество вопросов как-никак!
Я хочу сделать, чтобы при загрузке страницы у меня проверялось, входил ли пользователь в аккаунт или нет. Код из 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() или покажите кнопку «Вход».
- как осуществить второе "если"?