2010-04-17 5 views
0
  1. fbml에서 iframe으로 페이스 북 앱을 변환하는 중입니다.

이제 iframe 페이지를 거의 사용하지 않고 테스트하고 있습니다.Facebook 캔버스 Iframe 앱 인증 문제

$user = $facebook->require_login(); 

그것은 현재 로그인 한 사용자를 제공합니다. 그것은 페이스 북에서 제공하는 PHP의 API)에 의해 쿠키에 저장하는 facebook.com에서 변수를 일단. 페이스 북의 다른 탭을 사용하여 로그 아웃했는데 내 앱 내부의 링크를 사용하여 전체 사이트를 새로 고치지 않고 내 앱을 사용해 보았습니다. 여전히 $user 변수를 제공합니다.

사용자가 로그 아웃하지 않고 사용자가 로그인했음을 나타냅니다.

도와주세요. 내 앱을 안전하게 보호하고 싶습니다.

  1. "이 프레임을 새 창에서 열기"를 선택하면 내 iframe 앱에 액세스 할 수 있습니다. 나는 이것을위한 해결책이 필요하다.

미리 감사드립니다.

답변

0

로그인 한 페이스 북까지 로그인되었습니다. 사용자 정의 PHP의 세션 처리를 만들어야합니다. 당신이 응용 프로그램의 쿠키에서 사용자를 제거하려는 경우, 당신은이 작업을 수행 할 수 있습니다

//this will clear cookies for your application and redirect them to a login prompt 
$facebook->set_user(null, null); 
$facebook->redirect($appcallbackurl); 
+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 나는이 코드를 가지고있다. 이 코드를 실행하는 데 필요한 조건을 알려주실 수 있습니까? PHP 코드가 만료되면이 코드는 코드 아래의 체크 아웃을 트리거합니다. 그러나 나는이 코드가 사용자가 더 이상 페이스 북에서 활성화 (로그인)하지 않을 때 실행되기를 원한다. 시도 {\t \t 경우 ($ facebook-> api_client-> users_isAppUser (!)) { \t \t $ facebook-> 리디렉션 ($ facebook-> get_add_url()); \t} } catch (Exception $ ex) {// 응용 프로그램의 쿠키를 지우고 로그인 프롬프트로 리디렉션합니다. \t $ facebook-> set_user (null, null); \t $ facebook-> redirect ($ facebook-> get_login_url ($ app_url, 1)); } – itsoft3g

0

당신은 FB.Event.subscribe를 통해 로그 아웃 이벤트에 가입하고이 발생하는 경우 페이지를 다시로드하기 위해 자바 스크립트 SDK를 사용할 수 있습니다 :

FB.Event.subscribe ('auth.logout'기능 (응답) { 의 setTimeout ('window.location.reload(), 0); });

페이지가 iframe에로드 된 경우

(의 setTimeout()의 포장이 파이어 폭스에 대한 주위 작품으로 필요합니다.)

가 사용하는 사용자를 방지하기 위해 "새 창에서이 프레임을 열고,"당신은 확인하실 수 있습니다 if (window == window.top) 또는 signed_request가 사용 가능한지 여부. 그렇지 않은 경우 탭 URL로 리디렉션하십시오.

관련 문제