iframe .php
앱에서 자체 검색 방법은 페이지 모드 또는 캔버스 모드입니까? 감사!Facebook PHP 앱, 캔버스 또는 페이지 모드로 감지하는 방법은 무엇입니까?
9
A
답변
16
읽는 documentation :
- 페이스 북은 항상
page
그래서이라는 signed_request
이 페이지가 있다면
<?php
if(isset($_REQUEST['signed_request'])) {
// We are in Canvas or Page now
// Let's extract the data from the signed_request
// to check if we are inside a Facebook Page
$app_secret = "APP_SECRET";
$data = parse_signed_request($_REQUEST["signed_request"], $app_secret);
if(isset($data["page"])) {
echo "Page";
} else {
echo "Canvas";
}
} else {
echo "None, or something went wrong!";
}
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
?>
0
나는 또한 웹 사이트를 기준에 추가해야했다. 이것은 내 Yii 코드입니다
if(empty($_POST['signed_request']) === false)
$signedRequest = Yii::app()->fb->getSignedRequest();
if(isset($signedRequest['page']))
$this->layout = 'tab';
else if(isset($signedRequest['user']) && ! isset($signedRequest['page']))
$this->layout = 'canvas';
else
$this->layout = 'website';
0
@ifaour 솔루션에 감사드립니다. 작동하도록 수정해야했습니다.
나를 위해 일한이; 사이트가 캔버스로로드 될 때만 서명 된 요청이 전송된다는 사실을 확인했습니다. 하지만 직접 액세스 할 때는 서명 된 요청이 전송되지 않습니다.
if(!isset($_SESSION['signed_request']) && empty($_SESSION['signed_request'])) {
exit("direct access not allowed.");
}
else
{
// echo 'Canvas';
// continue script
}
관련 문제
- 1. Java의 Facebook 캔버스 페이지 - 선택적 앱 인증?
- 2. Facebook 캔버스 여러 페이지?
- 3. 페이지 탭으로 Facebook 앱
- 4. Facebook 앱 캔버스 fbml 빈 페이지로드 중
- 5. 페이지 리디렉션을 감지하는 방법은 무엇입니까?
- 6. Facebook 캔버스 앱 - 수락 후 초대 삭제
- 7. Facebook 캔버스 Iframe 앱 인증 문제
- 8. Facebook API - Facebook API를 사용하여 페이지 ID를 얻는 방법은 무엇입니까?
- 9. Facebook 페이지/앱 테스트 환경
- 10. 캔버스 iframe에 빈 페이지로 표시되는 앱 엔진의 Facebook 앱
- 11. Facebook - 어떻게 캔버스 페이지 탭이 HTTPS를 처리합니까?
- 12. iPhone 앱 상태 변경을 감지하는 방법은 무엇입니까?
- 13. Netbeans에서 Java 앱 잠김을 감지하는 방법은 무엇입니까?
- 14. Facebook 앱이 Facebook의 캔버스 페이지 대신 내 웹 사이트로 리디렉션됩니다.
- 15. PHP로 페이지 리디렉션을 감지하는 방법은 무엇입니까?
- 16. 페이지 탭에서 facebook signed_request를 끄는 방법은 무엇입니까?
- 17. Facebook 맞춤 페이지 및 앱 약도?
- 18. 최대 절전 모드로 열 충돌을 감지하는 방법은 무엇입니까?
- 19. Facebook 앱 프로필 탭이로드되지 않습니다.
- 20. Facebook 페이지의 $ facebook-> getSession() 앱 관리자가 로그인 할 때 iframe 앱/탭만 작동합니다.
- 21. Facebook 앱 : Flex 또는 JQuery 사용
- 22. Facebook 페이지 - 우수 사례 흐름
- 23. 인증 후 캔버스 페이지로 리디렉션하는 방법은 무엇입니까?
- 24. php-sdk 및 oauth로 캔버스 앱 사용자 인증 및 인증
- 25. facebook IFRAME 앱
- 26. Facebook 캔버스 POST ASP.net
- 27. 리디렉션 URL의 캔버스 앱 탐색
- 28. Facebook 캔버스 iFrame 앱 - 새로운 OAuth 프로토콜로 사용자 인증
- 29. Facebook 캔버스 앱 ASP.NET MVC HttpException : 유효하지 않은 모델
- 30. Facebook 페이지 용 앱을 개발하는 방법은 무엇입니까?
이 여전히의 경우 :
그래서 나는이 코드를 사용하여 종료? 실험 할 때, 사용자가 캔버스 URL에 착륙했을 때만 signed_request가 게시됩니다. 후속 페이지는 가져올 수 없습니다. – dmnc@FuzzyDunlop,이 [답변] (http://facebook.stackoverflow.com/questions/7610408/htacess-redirect-secure-browsing-on-my-facebook-page/7610648#7610648)을 참조하십시오. 'signed_request'를 잃고있는 iframe 내부를 리디렉션하는 대신 최상위 URL ('target = "_ top"을 사용하여)을 수정하도록 URL을 변경하십시오. – ifaour
테스트를 거쳤습니다. 나는'signed_request'를 얻는다; 'page' 매개 변수를 감지 할 수 없습니다. 업데이트를 고려해 주시겠습니까? – wpcoder