Facebookのログイン手順を実装しようとしていますが、機能しません。返されたTRUEを誤って解釈しているように見えるAJAXへのPOSTがあります。そして、ロジックフローを追跡するためにログを全体に配置しましたが、期待どおりにフローしていないようです。問題がわかりますか?
これがAJAXに投稿する私の.jsです
function initUserFbConnect(response){
console.log("initUserFacebookConnect");
// checking if the user is in the DB or first visit
$.post('../ajax/checkFbMember', { facebookId: response.id },
function(data){
if(data){
console.log("trying to set login time");
$.post('../ajax/setLoginTime', { facebookId:response.id },
function(data2){
if(data2 == true){
console.log("Login time logged");
}else{
console.log("problem logging time");
}
}
);
}else{
console.log("returned false from AJAX post");
console.log(data);
console.log("you are NOT a FB member");
}
}
);
}
そしてここに../ajax/checkFbMemberがあります
public function checkFbMember()
{
$facebookId = $this->input->post('facebookId');
ChromePhp::log("checking checkFBmember " . $facebookId );
$this->load->model('Member_model');
if( $this->Member_model->mCheckFbMember( $facebookId )){
ChromePhp::log('FB id found in system');
return TRUE;
}else{
ChromePhp::log('FB id NOT found in system');
return FALSE;
}
}
これが私のMember_modelです
public function mCheckFbMember( $facebookId )
{
ChromePhp::log('Inside model and checking');
$_query = $this->db->query( "SELECT users.id FROM users WHERE users.facebookID=$facebookId" );
if ( $_query->num_rows() > 0 ){ // user is found
ChromePhp::log('Inside model and FOUND member');
return TRUE;
}else{ // means first visit
ChromePhp::log('Inside model FAIL');
return FALSE;
}
}
しかし、これは私が記録しているものです..順序は奇妙です
initUserFacebookConnect
returned false from AJAX post // << this seems to come too early!
// console.log(data) doesn't log anything .. why?
you are NOT a FB member
checking checkFBmember 657322189
Inside model and checking
Inside model and FOUND member
FB id found in system
だから私はajaxに投稿しています..モデルをヒットし、コントローラーにTRUEを返します。コントローラーはTRUEをinitUserFbConnectに返します..しかし、どういうわけか、そのPOSTメソッドはFALSEを受け取りますか?それ以上に..他のメソッドが 起動する前に、すぐにスキップして「falseが返されました」と表示されますか?
DBでメンバーを見つけているので、なぜFALSEを返すのか混乱しています。しかし、ロギングが発生する順序についても混乱しています。initUserFbConnectのIFステートメントは、他のすべてが戻った後に解決されることを期待しています。しかし、それは銃を飛び越えているようです。最初にPHPとDBのチェックを行って、TRUE/FALSEを受信したことを確認する必要があります。
誰かが何が起こっているのか説明できますか?