У моего приложения есть кнопка входа в систему Facebook (<fb:login-button>
), которая регистрирует пользователя в Facebook и проверяет подлинность использования моего приложения. Вот мой код (login()
и logout()
), подготовьте макет страницы для входа в систему и выйдите из системы, соответственно). См. this answer для обоснования этого кода.Как подключиться к Facebook с помощью кнопки входа в систему?
window.fbAsyncInit = function() {
FB.init({
appId: myAppID,
channelUrl: window.location.protocol + '//'
+ window.location.host + '/channel.html',
status: false,
cookie: true,
xfbml: false,
oauth: true
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
login(response);
} else {
FB.Event.subscribe('auth.login', function(response) {
login(response);
});
logout();
}
});
}
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) return;
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
Проблема: новые пользователи получают диалог OAuth и может войти в Facebook, но auth.login
не срабатывает для них. Также нет auth.authResponseChange
и auth.statusChange
(все описано here). В следующий раз, когда пользователь нажимает кнопку, или если они уже вошли в Facebook, открывается диалоговое окно и сразу исчезает. (Как ни странно, обратные вызовы происходят, как и ожидалось, с моей учетной записью Facebook, возможно, потому, что ранее я аутентифицировал приложение.)
Как работаю, я попытался запустить FB.login()
в качестве руководства onclick event для входа -кнопка (простите за использование встроенного Javascript):
<fb:login-button onclick="FB.login(function(r){if(r.authResponse)login(r)})">
, но это не приводит к срабатыванию входа обратного вызова либо (хотя он и входа пользователя в).
Как правильно войти в Facebook с помощью кнопки входа?