2012-05-13 2 views
2

질문은 제목과 같습니다. 저는 최신 php-sdk (v3.1.1)을 사용하여 서버 측 인증 흐름을 운영하고 있습니다.

Chrome에 2 개의 탭이 있습니다. 하나는 내 Facebook 페이지이고 다른 하나는 PHP 테스트 페이지입니다.

  • $facebook->getUser()은 아직도 내가 로그인 한 경우에도 0 반환 내가 로그 아웃 할 때
  • $facebook->getUser()
  • 는 여전히 심지어 ID를 반환합니다.이 두 문제가 여러 번 발생합니다.

나는 이것의 해결 방법을 할 필요가 : 제공 access_token이있는 그래프 API 요청을 시작 시도하고 $response->error->type == "OAuthException"가 활성 세션의 여부를 확인하기 위해 있는지 확인하세요.

"안정적으로"$facebook->getUser()을 사용할 수 있습니까? 나는 SO를 통해 많이 검색했지만 php-sdk 3.1.1에 대한 최상의 답변을 찾지 못했습니다.

어떤 도움을 주시면 감사하겠습니다. 감사.

답변

9
  1. 로그인. documentation example of FB SDK에 따르면 getUser()은 로그 아웃 중이지만 FB 계정과 연결된 쿠키가있는 경우에도 userId를 반환합니다. 감지하려면 는 로그인 한 사용자가 (당신이 따라 scope을 전달하고 있는지 확인하지,이 URL을 다음으로, 탭을 이웃에 앱에서의 사용자가 로그인을 앱에 로그인

    $user = $facebook->getUser(); 
    //Check Access token 
    if ($user) { 
        try { 
         $user_profile = $facebook->api('/me'); 
        } catch (FacebookApiException $e) { 
         $user = null; 
        } 
    } 
    if ($user) { 
        //logged-in 
    } else { 
        //not logged-in 
    } 
    

    를 사용해야입니다

    $loginUrl = $facebook->getLoginUrl(
        'scope' => ... 
    ); 
    
  2. 로그 아웃 : 귀하의 응용 프로그램에 의해 수행하도록 구성 작업)에. PHP 서버가 세션 당 몇 가지 값의 액세스 토큰을 저장하고있는 것으로 보입니다. 따라서 브라우저에서 로그 아웃 한 경우에도 서버에 여전히이 토큰이 유효합니다. 사실, 나도 몰라, 버그 또는 기능이지만, 그들은 사용자가 로그 아웃 후 페이스 북에 의해 파괴되지 않습니다.

    것은 내가이 사용하고이 토큰을 파괴 : 나는 그것을마다 전화 드렸습니다

    $facebook->destroySession(); 
    

    때 사용자가 로그인 아웃 $facebook->getLogoutUrl()에 의해;

관련 문제