Приложение iframe для FB JavaScript не выполняет автоматическое перенаправление на страницу входа в FB, если сеанс недоступен - PullRequest
1 голос
/ 21 ноября 2011

Я разрабатываю приложение Facebook iframe с 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 Ответ

0 голосов
/ 03 января 2012

Вам больше не следует использовать 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();
            }
        });
    }
}
...