Я пытаюсь создать поток входа в Facebook для своего веб-приложения Vaadin 7.Как получить статус входа в Facebook в Vaadin 7 на загрузке страницы?
Когда кто-то посещает веб-сайт, я хотел бы:
Определить, является ли посетитель в настоящее время вошли в Facebook, и если да, то получить его Facebook идентификатор пользователя
Если я найду счет в базе данных для этого идентификатора пользователя Facebook выполните бесшумный вход и перенаправление на какую-то стартовую страницу.
См. Также documentation about Facebook login status.
Обновление: У меня теперь все работает, за исключением того, что я до сих пор не знаю, как выполнять javascript автоматически, когда страница загружается/отображается.
@JavaScript("https://connect.facebook.net/en_US/all.js")
public class AutoLoginView extends AutoLoginDesign
{
public AutoLoginView()
{
testButton.addClickListener(event -> actionTest());
}
@Override
public void attach()
{
super.attach();
com.vaadin.ui.JavaScript.getCurrent().addFunction("reportFacebookLoginStatusResult", new JavaScriptFunction() {
@Override
public void call(JsonArray arguments)
{
handleFacebookLoginStatusResult(arguments);
}
});
}
private void actionTest()
{
String script = "";
script += "FB.init({";
script += " appId : '<my-app-id>',";
script += " status : true,";
script += " xfbml : false,";
script += " version : 'v2.4'";
script += "});";
script += "FB.getLoginStatus(function(response) {";
script += " if (response.status === 'connected') {";
script += " reportFacebookLoginStatusResult(response.status, response.authResponse.userID, response.authResponse.accessToken);";
script += " } else {";
script += " reportFacebookLoginStatusResult(response.status, null, null);";
script += " }";
script += "});";
com.vaadin.ui.JavaScript.getCurrent().execute(script);
}
private void handleFacebookLoginStatusResult(JsonArray arguments)
{
LOGGER.log(Level.INFO, "status: '" + arguments.get(0).asString() + "'");
LOGGER.log(Level.INFO, "userID: '" + arguments.get(1).asString() + "'");
LOGGER.log(Level.INFO, "accessToken: '" + arguments.get(2).asString() + "'");
}
}
В настоящее время я использую кнопку прослушивания кнопки, чтобы выполнить javascript. Но как я могу выполнить это автоматически при загрузке страницы?