#facebook #facebook-graph-api
#Facebook #facebook-graph-api
Вопрос:
Я пытаюсь реализовать FB.login()
на своем сайте. Я получаю окно «Запрос разрешения», и как только пользователь принимает его, я хочу перенаправить его на свою пользовательскую страницу (в том же домене). Где и как я должен это настроить в коде?
<script>
//initializing API
window.fbAsyncInit = function () {
FB.init({ appId: 'xxx', status: true, cookie: true,
xfbml: true
});
};
(function () {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
} ());
function fblogin() {
FB.login(function (response) {
//...
}, { perms: 'user_birthday,user_location' });
}
</script>
Ответ №1:
Вы должны подписаться на auth.login
событие, что-то вроде:
window.fbAsyncInit = function() {
FB.init({ appId: 'xxx', status: true, cookie: true,
xfbml: true
});
FB.Event.subscribe('auth.login', function(resp) {
window.location = 'http://www.domain.com/custom_page.php';
});
};
Комментарии:
1. вы также можете захотеть подписаться на auth.sessionChange для посетителей, которые уже авторизовали ваше приложение и вернулись на исходную страницу.
2. @CameraSchoolDropout: Верно, но я всегда использую это с PHP-SDK, поэтому я обрабатываю этих пользователей, проверяя сеанс с помощью
$fb->getSession()
. 1 кстати
Ответ №2:
У меня это работает:
<div id='loginmsg'>
<div class="fb-login-button" data-scope="email,publish_stream,read_stream" data-show-faces="true" data-width="720" data-max-rows="1"></div>
</div>
<script>
FB.Event.subscribe('auth.login', function(resp) {
$('#loginmsg').html("<h2>...just a moment...</h2>");
window.location = '/logged-in.html';
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
$('#loginmsg').html("<h2>...just a moment...</h2>");
window.location = '/logged-in.html';
}
});
</script>