2013-05-27 5 views
1

первое спасибо за ваше время. Im пытается создать событие для кнопки facebook входа в систему, для перенаправления на PHP, который всегда вставит пользователя в БД, если уже существует просто обновить некоторые вещи ..О FB.Event.subscribe и FB.login

Проблема это после этого шаги

  1. Мое состояние вышло из facebook & сайт .. я использую facebook login для входа в систему, он запрашивает мои учетные данные на facebook, если я вхожу в систему, он перенаправляет меня на index.php? Fbconnect = fbconnect, что отлично, и im Perfectly Записан В, в facebook & на моем сайте !!

  2. Если я выйти из системы, все его отлично .... я просто loged из моего сайта, а не от Facebook

  3. Если им подключен к Facebook, но не на мой сайт, и нажмите кнопку «вход с facebook», NO перенаправление не happends, так что пользователь никогда не логины, :(Почему?

Я попробовал это 3 разные методы для перенаправления, но все они просто работают, как я уже раньше.

Это решение im пытается исправить проблему i comment here, Если бы я получил это перенаправление, все было бы идеально. но его позор, это работает только в первый раз

<script> 
window.fbAsyncInit = function() { 
FB.init({ 
appId : <?=YOUR_APP_ID?>, 
status : true, 
cookie : true, 
xfbml : true, 
oauth : true, 
}); 



FB.Event.subscribe('auth.login', function(response) { 
// ------------------------------------------------------ 
// This is the callback if everything is ok 
window.location.href = 'http://www.page.com.mx/index.php?fbconnect=fbconnect'; 

}); 


FB.Event.subscribe('edge.create', function(response) { 
    window.location.href = 'http://www.page.com.mx/index.php?fbconnect=fbconnect'; 
}); 

FB.login(function(response) {window.location.href = 'http://www.page.com.mx/index.php?fbconnect=fbconnect'; 
       //... 
      }); 
      }; 


(function(d){ 
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
js = d.createElement('script'); js.id = id; js.async = true; 
js.src = "//connect.facebook.net/en_US/all.js"; 
d.getElementsByTagName('head')[0].appendChild(js); 
}(document)); 
</script> 

ответ

0

Если предположить, что у нас есть 3 возможных состояния Задавая fb.getloginstatus (подключен, not_authorized, а не «связан», ни «not_authorized»), я проверил это решение в мое приложение только для первого и третьего статуса, это потому, что в моем приложении, когда я выхожу из системы, я выхожу из facebook. В любом случае, я получаю все это от документации на facebook. Я не знаю, правильно ли я понимаю, но события, которые вы ищете, тот, который уволен логином, это: «auth.login» все написано в facebook docs.

Итак, если вы хотите, чтобы перенаправить пользователя, как раз, и только после того, как он вошел в систему, вы должны обрабатывать вещи таким образом:

FB.Event.subscribe('auth.login', 
    function(response) { 
     alert('you just login, come with me'); 
     //redirect 
    } 
); 

Я ставлю этот код в этой функции window.fbAsyncInit = function() {, как раз перед обработкой FB.Event.subscribe('auth.authResponseChange', function(response) {, но, вероятно, лучше обработать auth.authResponseChange перед auth.login.

напоследок я хотел бы добавить, что есть и другие способы сбора данных пользователя один раз для каждой сессии

+0

Только для тех, кто читал, в FB.Event.subscribe («edge.create», он используется «для Например, предположим, что вы хотите записывать Likes в своей базе данных всякий раз, когда на кнопку нажата «одна и та же документация» https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/ –

Смежные вопросы