2010-11-22 8 views
0

Facebook API를 사용하여 사용자가 로그인 할 수있는 페이지가 있습니다. 물론 문제는 사용자가 페이지를 변경하고 로그인을 다시 인증해야 할 때입니다. Facebook API Conundrum

그래서 내 메인 페이지에 나는

$facebook = new Facebook(array(
    'appId' => 'xxx', 
    'secret' => 'xxxxxx', 
    'cookie' => false, 
)); 

$session = $facebook->getSession(); 

if ($session) { 
    try { 
     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 

     $_SESSION['fb_session'] = $me; 
     $_SESSION['fb_session']['loginUrl'] = $facebook->getLoginUrl(); 
     $_SESSION['fb_session']['logoutUrl'] = $facebook->getLogoutUrl(); 
     $_SESSION['fb_session'] = array_merge($_SESSION['fb_session'], $session); 
    } 

    catch (FacebookApiException $e) { 
     error_log($e); 
     unset($_SESSION['fb_session']); 
    } 
} 

if ($_SESSION['fb_session']) { 
    $x = $facebook->api("/{$_SESSION['fb_session']['id']}"); 
    print "<img src='https://graph.facebook.com/{$x['id']}/picture' />";       
    print "<a href='facebook_logout.php'></a>"; 
} 
else { 

    $loginUrl = $facebook->getLoginUrl(); 
    print "<a href='{$facebook->getLoginUrl()}'>Login to Post Comment</a>"; 
} 

이 그리고 내 facebook_logout.php은 다음과 같습니다 I가 사용자를 인증하는 경우

header("location:" . $_SESSION['fb_session']['logoutUrl']); 
unset($_SESSION['fb_session']); 

는 이제 일이 내가 처음 이동 세션을 설정한다. 그러나 그가 프로필을 변경하면 어떻게됩니까? 또는 내 웹 사이트에서 그의 API를 허용하지 않습니다.

저는 이것을 내 프로필과 테스트했습니다. 그것을 허용하면 잘 작동합니다. 내 개인 정보 설정에서 응용 프로그램을 제거 할 때 내 만료 시간이 다시 UID를-인증을 다시 간다 않도록하는 방법 그러나 나는 아직도 등을 내 사진과 이름 아래

fb_session

[id] => id 
[name] => Shahmir Javaid 
[first_name] => Shahmir 
[last_name] => Javaid 
[link] => http://www.facebook.com/shahmirj 
[about] => I was Born a n00b, I am still a n00b and il never be not a n00b. 
[gender] => male 
[locale] => en_GB 
[verified] => 1 
[updated_time] => 2010-11-22T15:45:22+0000 
[loginUrl] => https:// 
[logoutUrl] => https:// 
[session_key] => xxx 
[uid] => xxx 
[expires] => 1290448800 
[secret] => xxx 
[access_token] => xxx 
[sig] => xxx 

에 출력되는 참조 물론 사용자가 다시 로그인하지 않아도됩니까?

답변

0

graph.facebook.com/USERID/picture를 가리키고 있기 때문에 사용자가 프로필 사진 (프로필에서 사용하는 것으로 보이는 모든 사진)을 변경하면 업데이트 된 이미지가 표시됩니다. 응용 프로그램 설정의 고급 탭에있는 facebook deauthorize 콜백 URL을 사용하여 사용자가 응용 프로그램을 제거 할 때 응용 프로그램에 알릴 수 있습니다.

데이터를 가져 오기 전에 권한없는 ID 목록을 저장하고 검색하면 세션을 설정 해제하고 해당 ID를 데이터베이스에서 제거하면 로그인 URL이 다시 표시되며 해당 사용자의 Facebook 연결이 삭제됩니다. 백엔드.

+0

모든 im 저장은 uid와 이름입니다. 프로필 사진은'$ x = $ facebook-> api ("/ {$ _ SESSION [ 'fb_session'] [ 'id']} '') '에서 검색되지만, 요점은 만료되는 복용량입니다. 그리고 콜백 URL을 deautorize에 대해 잃어버린 메신저 –

+0

http://developers.facebook.com/docs/authentication/ - 페이지 끝 – Gazler

+0

이드는 절대 변하지 않습니다. 일단 Id 값을 가지면 사용자가 나를 제거하지 않았다는 것을 전제로'$ x-> api ('/ Id')'하면 데이터 전송을 중단 할 것인가? –