我已经完成了下面的工作,但即使作为粉丝,也只是说“非粉丝” 我上传了facebook.php文件并添加了我认为正确的应用设置。 我做错了什么?
我的应用设置如下:
Canvas URL: http://www.mysite.com/myapp/
Secure Canvas URL: https://www.mysite.com/myapp/
Page Tab URL: http://www.mysite.com/myapp/index.php
Secure Page Tab URL: https://www.mysite.com/myapp/index.php
我已经在我的服务器上编写了index.php文件,如下所示:
<?php
require 'facebook.php';
//uploaded into same directory as index.php
$app_id = "myappid";
$app_secret = "myappsecret";
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
$signed_request = $facebook->getSignedRequest();
$like_status = $signed_request["page"]["liked"];
?>
<!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>my app</title>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.Canvas.setSize();
}
// Do things that will sometimes call sizeChangeCallback()
function sizeChangeCallback() {
FB.Canvas.setSize();
}
</script>
<base target='_blank' />
</head>
<body>
<div id="container">
<?php if ($like_status) { ?>
FAN
<?php } else { ?>
NON-FAN
<?php } ?>
</div>
<div id="fb-root"></div>
<script src="https://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : 'myappid',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
window.fbAsyncInit = function() {
FB.Canvas.setAutoResize();
}
</script>
<script>
FB.Event.subscribe('edge.create',
function(response){
top.location.href = 'myappurl';
});
</script>
</body>
</html>
答案 0 :(得分:0)
描述的方法here,通常可以找出用户是否是页面粉丝的技巧。
如果您想按照自己的方式行事,可以在分配了一些价值后提供var_dump($like_status)
吗?
答案 1 :(得分:0)
请注意,signed_request参数仅在第一页加载到iframe时可用 - 一旦您开始在应用中导航,就不会再有signed_request了。 (所以你必须将signed_request或类似状态保存到会话f.e.,一旦你得到它。)
如果您在第一次加载时没有获得任何数据,则var_dump $ _REQUEST变量的内容,以查看该值是否存在。如果是,那么很可能你的app秘密是错误的 - 因为如果无法通过使用app secret计算正确的哈希来验证签名的请求,那么Facebook :: getSignedRequest将返回null。如果您的应用秘密真的正确,请仔细检查。