बेशक आप कर सकते हैं! के रूप में documentation में उल्लेख किया है, फेसबुक आप signed_request
में कुछ अतिरिक्त जानकारी भेज देगा:
एक उपयोगकर्ता फेसबुक पृष्ठ पर जाता है, वे अपने पृष्ठ टैब अगले उपलब्ध टैब स्थिति में जोड़ा देखेंगे। व्यापक रूप से, एक पृष्ठ टैब कैनवास पृष्ठ के समान ही लोड किया गया है। जब कोई उपयोगकर्ता आपका पृष्ठ टैब चुनता है, तो आपको हस्ताक्षर_request पैरामीटर एक अतिरिक्त पैरामीटर, पृष्ठ के साथ प्राप्त होगा। यह पैरामीटर में एक आईडी (वर्तमान पृष्ठ का पृष्ठ आईडी) के साथ एक JSON ऑब्जेक्ट होता है, व्यवस्थापक (यदि उपयोगकर्ता पृष्ठ के व्यवस्थापक पृष्ठ पर है), और पसंद किया गया (यदि उपयोगकर्ता पृष्ठ को पसंद आया है)। कैनवास पृष्ठ के साथ, आपको उपयोगकर्ता ऐप पर हस्ताक्षर किए गए उपयोगकर्ता जानकारी को उपयोगकर्ता आपके ऐप को अधिकृत करने तक प्राप्त नहीं होगा।
कोड की तरह मेरे 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, '-_', '+/'));
}
?>
अपडेट किए गए कोड: पिछले कोड काम करेगा है। मैं अनुरोध की वैधता की जांच नहीं कर रहा था। इसका मतलब है कि कोई अनुरोध को छेड़छाड़ कर सकता है और आपको झूठी सूचना भेज सकता है (admin
से true
पर सेट करना!)। signed_request
documentation दृष्टिकोण के बाद, कोड अपडेट किया गया है।
धन्यवाद! मैंने इसे समझ लिया, लेकिन अगर किसी और को जानने की ज़रूरत है तो मैं जवाब पोस्ट करने की सराहना करता हूं। – John
ग्रेट उत्तर और ट्यूटोरियल। –