簡體   English   中英

php-Facebook的注冊后重定向?

[英]php-Facebook redirect after registration?

我正在使用php sdk以便將用戶登錄到網站。 另外,我正在使用redirect_uri重定向到login.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頁面沒有刷新。 我怎么解決這個問題 ? 更新:如果用戶刷新頁面或再次單擊登錄,他將被自動重定向到main?

我在這里有同樣的問題。 我通過Facebook PHP函數getLoginURL()將網站用戶重定向為使用Facebook網站登錄。 用戶進入Facebook的登錄屏幕並重定向回我的網站后,頁面將不會刷新。 這意味着我無法更新當前當前登錄用戶的頁面顯示。 這似乎有些愚蠢-因為我認為這將是顯而易見的“默認”操作。

如果我/您添加了客戶端Facebook JS和root div,那么該過程將與Facebook JS驅動的頁面重新加載一起工作-但是基於拉入客戶端Facebook JS的這種重新加載是我無法做到的依賴-它只是增加膨脹並使事情復雜化。 關於如何解決此問題的任何其他想法的人。

客戶端JS放在您的結束body標簽之前:

<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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM