2

私は codeigniter を使用しており、ユーザーが登録されていない場合はユーザーをログインまたは登録するか、Facebook にログインしていない場合は Facebook ログインを促すコントローラーがあります。

現在私が抱えている問題は、Cookie が無効になっている場合、コントローラーがそれらを正常にログインし ($user を var_dumped して問題ありませんでした)、別のコントローラーにリダイレクトして、ユーザーが何らかの形でログアウトしているページを表示することです。 (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キャンバスの下にない場合、これはすべて正常に機能します。どんな助けでも大歓迎です。

4

1 に答える 1

0

ログイン フォームがあるフォーム ページに Cookie を設定します。そうすれば、ログインする前にCookie が正しく設定されているかどうかを確認できます。

  • ユーザーが開くかクリックして、ログイン ページに移動します。Cookie を設定し、フォーム ビューを表示します。
  • ユーザーはフォームにログイン情報を入力し、クリックします。
  • 何よりもまず -- Cookie が設定されているかどうかを確認します。設定されていない場合は、Cookie が必要であるというメッセージが表示されたエラー ページを表示します。

(わかりました、なぜ私がそのような古い質問を見ていたかさえわかりません)

于 2013-11-08T20:56:56.320 に答える