禁用的cookie将在Facebook Canvas中重定向后注销ion_auth用户

时间:2013-06-13 16:55:18

标签: facebook codeigniter facebook-graph-api ion-auth

我正在使用codeigniter,我有一个控制器,如果他们没有注册就会登录用户或注册他们,或者如果他们没有登录Facebook则提示Facebook登录。

现在我遇到的问题是,如果禁用cookie,控制器将成功登录(我var_dumped $ user,它很好),然后将它们重定向到另一个控制器,该控制器将显示用户所在的页面以某种方式退出(var_dump用户将给出空数组)。

如果我在facebook画布外面做同样的事情,那一切都很好。

public function login_fb()
    {

        require './assets/fb_sdk/src/facebook.php';
        $facebook = new Facebook(array(
            'appId' => 'app_id',
            'secret' => 'secret id',
            'cookie' => false // i tried it for true as well
        ));

        // See if there is a user from a cookie (even if cookies are disabled it works)
        $user = $facebook->getUser();

        if ($user) {
            try {
                // Proceed knowing you have a logged in user who's authenticated.
                $user_profile = $facebook->api('/me');
            } catch (FacebookApiException $e) {
                echo '<pre>' . htmlspecialchars(print_r($e, true)) . '</pre>';
                $user = null;
            }

            $f_id = $user_profile['id'];

 // log in user
                $identity = $f_id;
                $password = "some-password";
                $remember = TRUE; // remember the user
                $this->ion_auth->login($identity, $password, $remember);

                // update token
                $data = array (

                    'access_token'=> $token
                );
                $this->db->where ('username',$f_id);
                $this->db->update ('users',$data);

                $user_ion = $this->ion_auth->user()->row(); 
                //var dump on user_ion will give user information all good



    header('Location: '.base_url().'deals');
}

重定向后,它会丢失所有登录信息和

$user = $this->ion_auth->user()->row();

将给出一个空数组。如果它不在facebook画布下,这一切都很好。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

在您拥有登录表单的表单页面上设置一个cookie。这样,您可以在 登录之前检查Cookie是否设置正确

  • 用户打开或点击并进入登录页面。设置一个cookie,显示表单视图。
  • 用户在表单上输入登录信息,然后单击。
  • 在其他任何事情之前 - 检查cookie是否已设置 - 如果未设置,则给他们一个错误页面,其中包含cookie所需的消息。

(好吧我甚至不知道为什么我在看这么老的问题)