나는 가능한 한 적게 일어나고 있지만 여전히 모든 관련 코드를 제공하려고 노력할 것입니다. 차이는 없어야하지만 Zend Framework를 사용하고 있습니다. 이 코드는 사용자가 로그인하지 않은 경우, 그것은 PreDispatch 컨트롤러 플러그인에서 발사 실행합니다. 그들은 로그인하지 않은 경우 지금이 위의 코드는 호출Facebook Connect 및 공식 PHP API를 사용하여 사용자 로그 아웃에 실패했습니다.
Zend_Loader::loadClass('Users');
$users = new Users(Zend_Registry::get('dbAdapter'));
if($users->is_facebook_user())
{
$result = $users->login_facebook_user();
if($result == 'success')
$role = $users->role_id;
}
그것은이 확인하고이 있는지 확인하기 위해 수행 Facebook에 로그인했습니다.
public function is_facebook_user()
{
$this->fb_userid = $this->fb->get_loggedin_user();
if($this->fb_userid != '')
{
$this->load_user_by_facebook_id($this->fb_userid);
return true;
}
else
return false;
}
$fb
변수 내가 페이스 북에서 다운로드 공식 페이스 북 PHP의 API 클래스입니다 : 여기
이제 피들러를 사용하여 트래픽을 보면 다음 일련의 이벤트가 표시됩니다. 1. 그러면 로그 아웃 URL이 호출되어 Zend_Auth::getInstance()->clearIdentity();
2.이 로그는 기본적으로 사이트로 리디렉션되고 사용자를 로그 아웃하는 Facebook 로그 아웃 메소드를 호출합니다. 3. 그런 다음 페이스 북 로그 아웃 메소드 으로 전달되는 리턴 URL로 리다이렉트합니다. 4. 내 사이트에서 다시 조회 될 때 로그 아웃되므로 get_loggedin_user를 다시 호출합니다.
여기에 문제가 있습니다. 나는 get_loggedin_user이 방법
$this->fb_userid = $this->fb->get_loggedin_user();
의 결과입니다 로그인 한 사용자 비를 반환 볼 수 있지만 내가 다시 사용자 ID를 얻는다. 그렇다면이 코드를 호출하기 전에 null로 설정하더라도 코드에서이 ID를 얻을 수 있습니다. 따라서 코드에 여전히있을 수있는 방법이 없으며 사용자에게 null을 반환하는 트래픽을보아야합니다. id,하지만 어떻게 든 사용자 ID를 얻습니다.