2012-06-30 2 views
0

Я использую php sdk для входа пользователей на сайт. Также я использую redirect_uri для перенаправления на login.php. Я настраиваю файл cookie с идентификатором пользователя. Затем я проверяю, если печенье существует, я использую функцию заголовка для того, чтобы dircet пользователей обратно main.phpphp-Facebook перенаправить после регистрации?

<?php if(isset($_COOKIE['id']) == false){ 

     require_once('scripts/facebook.php'); 
     $config = array('appId' => 'xxx','secret' => 'xxx'); 
     $params = array('scope' => 'email,offline_access,user_birthday', 'redirect_uri' => 'http://www.xxx.com/login.php'); 
     $facebook = new Facebook($config); 
     $user = $facebook->getUser(); 

     if($user) { 

      try { 

      $user_profile = $facebook->api('/me','GET'); 
     $userid = $user_profile['username']; 



       //insert cookie 
       $expire = time() + 31556926; 
       $cookie_id = $user_profile['username']; 
       setcookie("id", $cookie_id, $expire); 
       header('Location: main.php'); 



      } catch(FacebookApiException $e) { 
          $login_url = $facebook->getLoginUrl($params); 
          echo '<img src="assets/login.png"><br>'; 
          echo '<a href="' . $login_url . '"><img src="assets/facebook_login.png"></a>'; 
          error_log($e->getType()); 
          error_log($e->getMessage()); 
      } 
     } else { 

      $login_url = $facebook->getLoginUrl($params); 
      echo '<img src="assets/login.png"><br>'; 
      echo '<a href="' . $login_url . '"><img src="assets/facebook_login.png"></a>'; 
     }//end facebook 
     }else{ 
      //if cookie id is set 
      header('Location: main.php'); 
      } 
    ?> 

теперь проблема, когда пользователь аутентифицирует приложение, оно перенаправляется на вход в систему стр. что означает, что страница php не обновляется. Как я могу решить эту проблему ? UPDATE: если пользователь обновит страницу или снова зайдет в систему, он будет автоматически перенаправлен на главную?

+0

Вы открывать отдельное окно для authenication? – Kristian

+0

Нет, он использует то же окно. – user1481850

+0

Хорошо, тогда какая php-страница не обновляется? – Kristian

ответ

1

У меня такая же проблема здесь. Я перенаправляю пользователя веб-сайта для входа на сайт Facebook через функцию PHP PHP getLoginURL(). Когда пользователь перешел на экран входа в Facebook и был перенаправлен обратно на мой сайт, страница не обновляется. Это означает, что я не могу обновить отображение страницы для текущего пользователя в настоящее время. Это кажется немного глупым, потому что я бы подумал, что это будет очевидным дефолтом.

Если вы добавляете клиентский JS-интерфейс и корневой раздел на стороне клиента, тогда этот процесс работает с перезагрузкой страницы на основе JS-страницы, но эта перезагрузка основана на привлечении клиентской стороны. JS - это зависимость, которую я мог бы сделать без - это просто добавляет раздувание и усложняет ситуацию. Любой, у кого есть другие идеи о том, как обойти это.

стороне клиента JS помещается непосредственно перед закрывающим тегом тела:

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: '<?php echo $facebook->getAppID() ?>', 
     cookie: true, 
     xfbml: true, 
     oauth: true 
    }); 
    FB.Event.subscribe('auth.login', function(response) { 
     window.location.reload(); 
    }); 
    FB.Event.subscribe('auth.logout', function(response) { 
     window.location.reload(); 
    }); 
    }; 
    (function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 
Смежные вопросы