Если вы запрашиваете только один раз для входа в систему / разрешения (это не будет обрабатывать получение разрешений при необходимости), что-то вроде этого должно работать:
function withLogin(callback) {
var ifLogin = function(response, true_cb, else_cb) {
if(response.authResponse)
true_cb(null, response);
else
else_cb(true, null);
};
FB.getLoginStatus(function(response) {
ifLogin(response, callback, function(err, response) {
FB.login(
function(response) {
ifLogin(response, callback, callback);
},
{ scope: "email,user_photos" }
);
});
});
}
...
window.fbAsyncInit = function() {
...
withLogin(function(err, response) {
if(err)
alert("This only works if you log in!");
else
alert("UserId: " + response.authResponse.userID);
});
};