Я создаю приложение Facebook Canvas и слежу за более или менее демонстрационным приложением .
Как и в демонстрации, я могу получить пользовательские данные из signed_request
который размещен на моем сайте на первой странице загрузки.Кроме того, как показано в демонстрации, я использую следующий фрагмент для перезагрузки страницы с изменениями пользователя:
var Config;
function facebookInit(config) {
Config = config;
FB.init({...});
FB.Event.subscribe('auth.sessionChange', handleSessionChange);
...
}
function handleSessionChange(response) {
if ((Config.userIdOnServer && !response.session) ||
Config.userIdOnServer != response.session.uid) {
goHome();
}
}
function goHome() {
top.location = 'http://apps.facebook.com/' + Config.canvasName + '/';
}
Здесь Config
- это объект, который заполняется информацией с сервера.
Проблема возникает, когда пользователь перемещается по приложению по ссылке.Если я использую AJAX, страница фактически не перезагружается и все работает нормально.Но если я использую стандартную ссылку, пользователь переходит на другую страницу моего приложения со стандартным запросом GET.В этом случае я не знаю, как получить информацию о пользователе, поэтому Config.userIdOnServer
не определено, и происходит перезагрузка страницы.
Конечно, я могу избежать этого, удалив вызов handleSessionChange
или созданием одностраничного приложения, содержащего только ссылки AJAX, но я чувствую, что упускаю что-то базовое из потока Facebook.