그래서 내 탭에서 iFrame을 사용하고 있으며 사용자가 비밀 콘텐츠를보기 위해 페이지를 좋아해야하는 "차단 된 것과 같은"중 하나를하고 있습니다. 이 작업을 더 원활하고 원활하게 수행 할 수있는 방법이 있습니까?사용자가 페이지를 좋아하는지 확인하는 매끄러운 방법
FBML으로 작성된 탭에 대해서는 권한이 필요하지 않지만 iframe이 아니기 때문에 그럴 것이라고 추측합니다.
감사합니다.
그래서 내 탭에서 iFrame을 사용하고 있으며 사용자가 비밀 콘텐츠를보기 위해 페이지를 좋아해야하는 "차단 된 것과 같은"중 하나를하고 있습니다. 이 작업을 더 원활하고 원활하게 수행 할 수있는 방법이 있습니까?사용자가 페이지를 좋아하는지 확인하는 매끄러운 방법
FBML으로 작성된 탭에 대해서는 권한이 필요하지 않지만 iframe이 아니기 때문에 그럴 것이라고 추측합니다.
감사합니다.
물론 할 수 있습니다! documentation에서 언급 한 바와 같이, 페이스 북은 signed_request
당신에게 몇 가지 추가 세부 사항을 보내드립니다 :
사용자가 페이스 북 페이지로 이동, 그들은 당신의 페이지 탭 가능한 다음 탭 위치에 추가 볼 수 있습니다. 대략 페이지 탭은 캔버스 페이지와 정확히 같은 방법으로로드 된 입니다. 사용자가 페이지 탭을 선택하면 추가 매개 변수 page 1 개를 사용하여 signed_request 매개 변수를 받게됩니다. 이 매개 변수는 ID (현재 페이지의 페이지 ID), admin (사용자가 페이지의 관리자 인 경우) 및 (사용자가 페이지를 좋아하는 경우) 좋아요를 가진 JSON 개체를 포함합니다. Canvas 페이지와 마찬가지로 사용자가 앱을 승인 할 때까지 앱에서 signed_request 앱에 액세스 할 수있는 모든 사용자 정보를받을 수 없습니다.
처럼 내 tutorial해야 뭔가에서 가져온 코드 :
<?php
if(empty($_REQUEST["signed_request"])) {
// no signed request where found which means
// 1- this page was not accessed through a Facebook page tab
// 2- a redirection was made, so the request is lost
echo "signed_request was not found!";
} else {
$app_secret = "APP_SECRET";
$data = parse_signed_request($_REQUEST["signed_request"], $app_secret);
if (empty($data["page"]["liked"])) {
echo "You are not a fan!";
} else {
echo "Welcome back fan!";
}
}
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, '-_', '+/'));
}
?>
업데이트 된 코드 : 이전 코드가 작동 것이지만. 나는 요청의 유효성을 검사하지 않았습니다. 이는 누군가가 요청을 변조하고 잘못된 정보를 보낼 수 있음을 의미합니다 (: 을 true
!으로 설정하는 것과 같습니다). signed_request
documentation 접근법에 따라 코드가 업데이트되었습니다.
감사합니다. 나는 이것을 알아 냈다. 그러나 누군가 다른 사람이 알아야 할 필요가있을 때 대답을 게시 해 주셔서 감사합니다. – John
훌륭한 답변과 자습서. –