2016-12-22 4 views
2

私はCodeigniter 3.1.2を使用しており、自分のアプリでFacebookのログインを実装しようとしています。ユーザーがログインし、私のアプリケーションを承認した後、私は自分のDBにユーザー情報を保存してからセッションを作成したいと思う。セッションがjquery ajaxによって作成されていません

セッションの作成を除いてすべてうまく動作します。これは、私のアプリを正常に認証した後、ユーザーが私のアプリにログインしていない理由です。 FBのログインボタン次のコードをクリックで

はここ

FB.login(function (response) { 
     if (response.status === 'connected') { 
      var site_url = $('#site_url').val(); 
      $.ajax({ 
       url: site_url + 'weapons/register', 
       type: 'post', 
       data: { 
        email: response.email 
       } 
      }); 
      window.location.href = '<?php echo site_url_tr('profile'); ?>'; 
     } 
    }, {scope: 'public_profile,email'}); 

を発射された私のregisterメソッドは、そう、これはセッションを作成するために私のattempであり、その動作していない

public function register() { 
     $email = $this->input->post('email'); 
     $user = array(
      'email' => $email 
     ); 
     $u = $this->pm->total_item('users', 'email', $email); 
     if ($u < 1) {//if user not exist then create 
      $this->db->set('reg_date', 'NOW()', FALSE); 
      $user_id = $this->pm->insert_data('users', $user, TRUE); 
     }else{ 
      $user = $this->pm->get_row('email', $email,'users'); 
      $user_id = $user['id']; 
     } 
     $user_data = array(
      'user_id' => $user_id, 
      'username' => $email, 
      'email' => $email, 
      'user_type' => 'user' 
     ); 
     $this->session->set_userdata($user_data); 
    } 

$this->session->set_userdata($user_data);です。上記の私のJSコードからコントローラProfileにリダイレクトしません。ありがとう

私はsessionライブラリとドライバを自動読み込みしました。ユーザーが自分のファイルに$this->load->library('session');を含めるか、またはそれを自動的にロードを確認してください が

+0

非同期の問題とは別に、「site_url」には何が含まれていますか?これにリクエストがクロスドメイン化された値が含まれていた場合、 'withCredentials'フラグを追加しない限り、リクエストとともにクッキーは送信されません。 – CBroe

+0

@CBroe 'site_url' here' <?php echo site_url();?> 'http:// localhost/project_name /' –

答えて

1
  1. を歓迎し、ほとんど私のアプリを認証する際に任意のアイデアはどのように私は(CodeIgniterのを経由して)セッションを作成 することができます。

  2. Ajaxコールはasynchroneです:リクエストを完了する前にリダイレクトしています。 。

    $アヤックス({// パラメータ})完了(関数(){//ここ リダイレクト})。

希望します。

+0

はいセッションライブラリとドライバを含むオートロード済みです。またリダイレクションは 'done'で試したことがありません –

+0

通常、response.statusにはコードが含まれています(成功の場合は200、見つからない場合は404)。私はあなたのクライアントのif変数の前にconsole.log(応答)をするべきだと思います。 – fbhcf

+0

ここに私のコンソールデータは '応答'は 'オブジェクト{authResponse:オブジェクト、状態:"接続された "}' –

関連する問題