Метод 1:
Хотя я считаю, что DMCS дал правильное решение проблемы, здесь есть другой подход. Используйте метод FB.login с пользовательской ссылкой для входа.
<script>
window.fbAsyncInit = function() {
FB.init({
appId: 'YOUR-APP-ID',
status: true,
cookie: true,
xfbml: true,
oauth: true
});
};
function facebookLogin() {
FB.login(function(response) {
if (response.authResponse) {
console.log('Authenticated!');
// location.reload(); //or do whatever you want
} else {
console.log('User cancelled login or did not fully authorize.');
}
},
{
scope: 'email,user_checkins'
});
}
(function(d) {
var js,
id = 'facebook-jssdk';
if (d.getElementById(id)) {
return;
}
js = d.createElement('script');
js.id = id;
js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
} (document));
</script>
Разметка кузова:
<div id='fb-root></div><!-- required for SDK initialization -->
<a id='fb-login' href='#' onclick='facebookLogin()'>Login with Facebook</a>
Когда вы нажимаете на кнопку, она запускает функцию обратного вызова внутри FB.login.
Метод 2:
В качестве альтернативы, используя плагин кнопки входа в FB, вы можете подписаться на auth.statusChange
и проверить статус пользователя в ответе.
FB.Event.subscribe('auth.statusChange', function(response) {
// check for status in the response
});
Обратите внимание, что если вы используете плагин кнопки входа в систему fb, а пользователь уже вошел в систему и подключился к приложению, кнопка входа не отображается (см. Ее в документации здесь )