Привет, я пытаюсь установить POST, когда пользователь нажимает кнопку входа в систему с помощью кнопки facebook. Это связано с тем, что в коде, который я сделал, если вы вышли из системы, но вошли в систему в facebook, вы автоматически заходите на сайт снова … поэтому, если вы выходите из клика, вы никогда не выходите из системы.
Чтобы избежать этого, я пытаюсь установить POST, установить классическое условие
if ( isset ($_POST['fbconnect']))
Мне просто нужно добавить скрытый ввод и отправить эту форму usinf fb: login-button
вот что я пробовал .. без везения.
<form name="fbconnect" method="post"> <input type="hidden" name="fbconnect" value="fbconnect" /> <div id="fb-root"></div> <fb:login-button scope='email,user_birthday'></fb:login-button></form> <?php } ?> <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 $(this).parents('form').submit(); }); }; (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>
Также ive попытался заменить $(this).parents('form').submit();
формы с именем формы, но это доцентная работа либо
Я также пробовал это
<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 var url = "index.php"; var params = "fbconnect=fbconnect"; http.open("POST", url, true); //Send the proper header information along with the request http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.setRequestHeader("Content-length", params.length); http.setRequestHeader("Connection", "close"); http.onreadystatechange = function() {//Call a function when the state changes. if(http.readyState == 4 && http.status == 200) { alert(http.responseText); } } http.send(params); }); }; (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>
Лучшей практикой будет использование переадресации, когда пользователь выйдет из системы вместо POST, то есть:
HTML:
<a onclick="FB.logout">Logout</a>
и Javascript:
FB.Event.subscribe('auth.authResponseChange', function(response) { if (response.status == "connected") { // log in login } else if (response.status != "connected") { // logout logic, ie // location.href = "/sessions/logout"; alert("User has disconnected") location.href = "/index.php?fbconnect=fbconnect" } });
если вы настаиваете на записи, вы можете использовать jQuery для упрощения вещей:
FB.Event.subscribe('auth.login', function(response) { $.post("index.php", {fbconnect: fbconnect}, function(data, response) { alert(data); }); });