2012-05-08 1 views
0

FB 앱이있어서 어떤 상황에서는 index.php와 같은 도메인에있는 PHP 파일을 사용하여 div에 콘텐츠를로드 할 자바가 필요합니다. 이 중 일부는 사용자가 여전히 유효하고 인증 토큰 및 FB 사용자 ID가 필요하다는 것을 확인하고자합니다. 나는 php 파일에서 FB PHP SDK의 인스턴스를 생성하여 자바 스크립트에 의해 주입되고 getUser()와 getAccessToken()을 사용하여 아약스를 구현했다. 그러나 때때로 getAccessToken() 호출이 실패하고 작업을 수행하기 위해 유효한 액세스 토큰이 필요하다고보고하는 경우가 있습니다.FB PHP SDK의 getAccessToken()은 사용자의 인증 토큰을 검색하는 신뢰할 수있는 방법입니까?

getAccessToken()은 사용자가 FB에 로그인했는지 또는 다른 작업을해야하는지 (예 : Javscript의 서명 된 요청에서 구문 분석 한 액세스 토큰을 저장하고 변수를 PHP 파일에 주입하고 있습니까?) 감사.

답변

0

가장 신뢰할 수있는 것은 아마도 세부 정보를 얻는 것입니다. 과거에는 "getUser"인스턴스가 true를 반환했지만 사용자는 실제로 로그온하지 않았습니다. 그래서 지금은 모든 세부 사항을 얻을이 더 안정적으로 작동 :

$facebook = new Facebook(array(
          'appId' => FB_APP_ID, 
          'secret' => FB_APP_SECRET, 
          'cookie' => true 
        )); 
$FB_UID=false; 
try { 
    $FB_UID = $facebook->getUser(); 
    // This verifies the user is actually logged in. teh above can return "true" but the following will crap out and throw exception 
    $FB_me = $facebook->api('/me'); // 'birthday' 
    // Not needed: 
    // $FB_token = $facebook->getAccessToken(); 

} catch (FacebookApiException $e) { 
    $FB_UID = false; 
    $FB_me = false; 
    // $FB_token = false; 
} 
+0

내가 볼, 그리고 난 그냥 사용할 수 있습니다 - 사실에 대한 액세스를 필요없이 사용자의 FB 요청을 삭제 등의 작업을 수행 할> API() 호출을 그들의 액세스 토큰? – keybored

+0

예 - "쿠키"매개 변수를 사용하지 않거나 액세스 토큰을 주변에 두거나 나중에 사용하기 위해 DB에 저장하는 등의 멋진 작업을 수행하는 경우 액세스 토큰이 필요합니다. 그런 경우, a) 사용자가 접속할 때 액세스 토큰을 저장하고, 해당 액세스 토큰을 사용할 때 "setAccessToken()"을 사용하고 위의 "getUser"및 "api (/ me)"코드를 사용하여 그 액세스 토큰은 여전히 ​​유효합니다. – Robbie