Возможно ли заставить сеанс Facebook обновить или, альтернативно, вызвать функцию «FB.init» более одного раза в документе. Я не буду вдаваться в подробности с тем, чего я пытаюсь достичь, поскольку он довольно длинный, но я работал над этим какое-то время, и это определенно кажется необходимым для этого.Заставить сеанс Facebook обновиться
У меня есть сценарий, который вызывается каждые 30 секунд, который проверяет, если пользователь facebook авторизован, это достигается просто с этим:
window.fbAsyncInit=function(){
// Initialize the Facebook object
FB.init({
appId:"123",
status:true,
cookie:true,
xfbml:true,
oauth:true
});
// Check the Facebook session status every 30 seconds
setTimeout(function(){
// Pass the Facebook object to the welcome function
fb_welcome(FB);
,30000);
};
В функции «fbWelcome», я тест, чтобы увидеть, если пользователь регистрируется через Facebook с помощью функции getLoginStatus
. В зависимости от ответа, я затем изменяю элементы на странице. Тем не менее, есть одна ключевая вещь, которую я делаю, что все это идет не так.
Если пользователь вошел в систему Facebook, я отправляю запрос в свой API с помощью ajax, который возвращает данные Пользователя Facebook. Этот API использует PHP для связи с API Facebook. Если пользователь загрузился в Facebook при загрузке страницы, проблем не возникнет. Однако, если пользователь не был зарегистрирован на Facebook и регистрируется в Facebook на другой вкладке, пока на моем сайте, сеанс не обновляется, и детали не могут быть доступны, поскольку токены доступа и подписанный запрос недействительны. Поэтому мне нужен способ обновить токен доступа и подписанный запрос в сеансе с помощью javascript, чтобы убедиться, что они правильно читаются PHP API.
Я уверен, что снова вызвав функцию FB.init, это решит ее, поскольку она обновит сеанс. Тем не менее, я не уверен, что я намерен называть эту функцию более одного раза на страницу. Разрешено ли это? Будет ли это беспорядок вообще?
Всего несколько нот:
- Я знаю, что я мог бы извлечь пользователей детали с помощью Javascript SDK и FB.api, однако, я не хочу, чтобы сделать это по определенным причинам
- Я также знаю, что я могу передать маркер доступа и подписанный запрос на PHP API, но я также не хочу, чтобы сделать это по определенным причинам
Любая помощь очень ценится
Мне было бы очень интересно узнать, как вы это сделали; Я пытаюсь сделать то же самое, используя JS API. –
@JamieDexter В конце концов мне пришлось просто использовать FB.api! Я пробовал так много разных вещей безрезультатно ... Каждый хак, который я написал, не был достаточно надежным и, в конце концов, не стоил развиваться дальше. Раздражает то, что я вынужден интегрироваться с API Facebook, который явно не готов к интеграции. Если интеграция с Facebook не является необходимостью для вашего бизнеса, держитесь подальше от него. Вы никогда не сможете гарантировать, что это сработает, даже если ваш код в порядке! –