Приложение iframe для FB JavaScript не выполняет автоматическое перенаправление на страницу входа в FB, если сеанс недоступен
Я занимаюсь разработкой приложения iframe для Facebook с JavaScript. Проблема в том, что пользователь нажимает на URL приложения https://apps.facebook.com/projectanida/. Я хочу, чтобы пользователи видели главную страницу приложения, если они уже вошли в fb и, если сеанс пользователя недоступен, тогда пользователь должен быть автоматически направлен на страницу FB с запросом учетных данных для входа в Facebook для использования моего приложения.
Вот код:
var href = "https://projectafacebook.appspot.com/fb/";
var appliId = "165346656890746";
window.fbAsyncInit = function() {
FB.init({
appId: '165346656890746',
status: true,
// check login status
cookie: true,
// enable cookies to allow the server to access the session
xfbml: true // parse XFBML
// sizeChangeCallback();
});
FB.Event.subscribe('auth.sessionChange', function (response) {
if (response.session) {
//user is logged in!
alert("//user is logged in!");
// window.location = document.URL;
} else
{
alert("//user is not logged in!");
windows.top.location.href = 'https://graph.facebook.com/oauth/authorize?client_id=' + appliId + '&redirect_uri=' + href + '&display=page';
}
});
};
FB.getLoginStatus(function(response) {
if (response.session) {
//alert("session true");
//$("#fb-root").show();
} else {
top.location.href = 'https://graph.facebook.com/oauth/authorize?client_id=' + appliId + '&redirect_uri=' + href + '&display=page';
}
});
часть if работает нормально, но когда появляется другая часть, она показывает страницу входа в систему fb, но под синей полосой страницы fb она показывает мое приложение и также доступна, даже если сеанс недоступен... в некоторых случаях она отлично работает в chrome и IE8 но никогда в опере не Firefox.
и если мы войдем в систему на этой странице, она все еще будет перенаправлена на страницу моего приложения в fb, но размер холста будет фиксированным, и мое приложение будет обрезано, где, как будто я сначала войду в систему, а затем нажму на URL своего приложения, тогда приложения работают нормально, а размер холста также подойдет, пожалуйста помоги!
1 ответ
Вы не должны использовать auth.sessionChange
больше, попробуйте с auth.statusChange
или же auth.authResponseChange
,
Также есть ли причина, по которой вы перенаправляете на определенный URL, когда вы обнаружите, что нет сеанса вместо использования FB.login()
?
Попробуй это:
FB.Event.subscribe('auth.statusChange', handleUserStateChange);
FB.getLoginStatus(handleUserStateChange);
function handleUserStateChange(response) {
// User is not logged into Facebook OR hasn't authenticated app
if(!response.authResponse) {
// http://developers.facebook.com/docs/reference/javascript/FB.login
FB.login(function(response) {
if(response.authResponse) {
window.location.reload();
}
});
}
}