php-Facebook 注册后重定向


php-Facebook redirect after registration?

我正在使用php sdk来登录用户的网站。我也正在使用redirect_uri重定向到登录.php我正在使用用户ID设置cookie。然后我正在检查cookie是否存在,我正在使用标头函数将用户带回main.php

<?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 页面没有刷新。我该如何解决这个问题?更新:如果用户刷新页面或再次单击登录,他将自动重定向到主?

我在这里有同样的问题。我将网站用户重定向到通过Facebook PHP函数getLoginURL()使用Facebook网站登录。一旦用户转到Facebook的登录屏幕并被重定向回我的网站,页面就不会刷新。这意味着我无法更新当前登录用户的页面显示。这似乎有点愚蠢 - 因为我认为这将是明显的"默认"做法。

如果我/你添加了客户端Facebook JS和根div,那么该过程适用于Facebook JS驱动的页面重新加载 - 但这种基于拉入客户端Facebook 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>