Php Facebook登录页面在被喜欢后更改
我试图向喜欢我的页面的用户展示一个不同的页面, 我正在使用这个代码,但它似乎不起作用,有人能帮忙吗 基本上,它应该显示main index.html作为登录页,然后当人们单击like按钮时,它将显示fans_only.html页面,在用户喜欢该页面后欢迎他们Php Facebook登录页面在被喜欢后更改,php,facebook,Php,Facebook,我试图向喜欢我的页面的用户展示一个不同的页面, 我正在使用这个代码,但它似乎不起作用,有人能帮忙吗 基本上,它应该显示main index.html作为登录页,然后当人们单击like按钮时,它将显示fans_only.html页面,在用户喜欢该页面后欢迎他们 <?php require_once 'facebook/facebook.php'; /* * "appId" and "secret" values get from your Facebook application sett
<?php
require_once 'facebook/facebook.php';
/*
* "appId" and "secret" values get from your Facebook application settings
*/
$config = array (
'appId' => 'xxx',
'secret' => 'xxx'
);
$facebook = new Facebook ($config);
{
$signed_request = $facebook->getSignedRequest();
if ($signed_request)
{
if (isset ($signed_request ['page'] ['liked']) && $signed_request ['page'] ['liked'])
{
//Place your secret content here
//echo '<p>This is a secret content.</p>';
require ("fans_only.html");
exit;
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>intro</title>
<!--Adobe Edge Runtime-->
<script type="text/javascript" src="edge_includes/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="edge_includes/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="edge_includes/edge.0.1.3.min.js"></script>
<script type="text/javascript" src="edge_includes/edge.symbol.0.1.3.min.js"></script>
<script type="text/javascript" charset="utf-8" src="index_edge.js"></script>
<script type="text/javascript" charset="utf-8" src="index_edgeActions.js"></script>
<link rel="stylesheet" href="index_edge.css" />
<!--Adobe Edge Runtime End-->
<style type="text/css">
body {
background:url(images/preloader.gif) 255px 10px no-repeat #fff;
}
</style>
</head>
<body style="margin:0;padding:0;">
<div id="stage" class="EDGE-22385971">
</div>
</body>
</html>
简介
身体{
背景:url(images/preload.gif)255px10px无重复#fff;
}
尝试以下代码:
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
'cookie' => true,
));
$session = $facebook->getSession();
$me = null;
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
$signed_request = $_REQUEST["signed_request"];
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, '-_', '+/'));
}
$data = parse_signed_request($_REQUEST["signed_request"], "APP_SECRET");
if ($data['page']['liked']){
//SHOW DATA FAN
}else{
//SHOW DATA NO FAN
}
我试图使用类似的代码设置一个欢迎页面(fan/nofan),但是作为一个noobie,我缺少了一个步骤,即程序(index.php文件)如何知道要显示的页面以及该页面的位置。是将HTML代码插入index.php文件还是调用了对象。下面是为两个不同的欢迎页面设置的facebook sdk。
欢迎页面
当你说“它似乎不起作用”时,你能更具体一点吗?什么是错误消息?另外,如果注释掉require行并使用echo行,会发生什么?那么它能工作吗?抱歉,如果我之前不清楚,我的意思是当我喜欢这个页面时,它应该显示(“fans_only.html”)的内容,但在我的情况下,它仍然显示正在显示的内容的主要内容,我有2个网页;一个是给还没有点击“喜欢”的人的,另一个是给确实喜欢它的人的,只是在他们喜欢该页面后作为问候语。我试着用echo替换,但结果是一样的。相关问题:这段代码与他的代码有何不同?不是使用库,而是自己解析已签名的请求?我想我已经成功了,但有一个愚蠢的错误:在服务器上处理文件的人将index.html放在了登录页上,他正在读取html而不是php文件,对此给大家带来的不便,我深表歉意
<?php
require_once './facebooksdk/src/facebook.php'; //download at https://github.com/facebook/php-sdk/downloads
$facebook = new Facebook(array(
'appId' => '174968482618267', // enter your App's ID
'secret' => '5710d00a9b4acec8849d8adeb08c15c4', // enter your App's Secret
'cookie' => true,
));
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Welcome Page</title>
</head>
<body>
<?php
// Did they like a page?
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["page"]["liked"])) {
// DISPLAY TO: those who didn't LIKE the page
?>
<!-- Didn't Like -->
You don't "Like" our page :-(
<!-- End of Didn't Like -->
<?
} else {
// DISPLAY TO: those who LIKED the page
?>
<!-- Liked -->
Thanks for "Liking" our page!
<!-- End of Liked -->
<? } ?>
<!-- follow @svolinsky on twitter -->
</body>
</html>