PHP Facebook Like Gate
Here is a simple PHP function to create a conditional page based on whether or not the user likes the Facebook page or not. Also, it makes use of the javascript SDK to dynamically resize the canvas to the desired width and height of the page content.
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Site Name</title>
<meta property="og:title" content=""/>
<meta property="og:type" content="sport"/>
<meta property="og:url" content="http://site.com"/>
<meta property="og:image" content="/images/appLogo.jpg"/>
<meta property="og:site_name" content="Site Name"/>
<meta property="fb:admins" content="USER_ID"/>
<meta property="og:description" content="Description."/>
<meta property="fb:app_id" content="APP ID"/>
<link rel="stylesheet" href="styles/site.css" type="text/css" />
</head>
<body style="">
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : '123456789', // unique app ID for tab application. This will need to be updated for live app.
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true // enable OAuth 2.0
});
</script>
<?php
function parse_signed_request($signed_request) {
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;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
if($signed_request = parse_signed_request($_REQUEST['signed_request'])) {
//print_r($signed_request);
//print_r($_REQUEST['signed_request']);
if($signed_request["page"]["liked"]) {
?>
<script type="text/javascript">
FB.Canvas.setSize({ width: 520, height: 1250 }); // Set to the correct height of your page content.
</script>
<div id="like">
You liked this.
</div>
<?php
} else {
?>
<script type="text/javascript">
FB.Canvas.setSize({ width: 520, height: 530 }); // Set to the correct height of your page content.
</script>
<div id="preLike">
Like this page.
</div>
<?php
}
}
else {
?>
No signed_request. I am broken.
<?php
}
?>
</body>
</html>
Written by Michael Green
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Php
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#