2012-07-12 108 views
0

我已执行下面和还甚至作为风扇Facebook应用扇形浇口,它仅说“NON-FAN”。
我上传了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

方法描述here,usualy的伎俩寻找无论用户是否是页面的粉丝。

如果你想要做你的方式,请您提供var_dump($like_status),它被赋予一定的价值后?

+0

谢谢 - 我似乎无法找到“Canvas 2.0 OAuth 2.0”高级选项? – iCeR 2012-07-12 19:03:29

+0

默认情况下,如果我没有记错的话(答案来自2011年初,可能还没有为所有应用启用) – Darvex 2012-07-12 19:04:49

+0

var_dump($ like_status);返回NULL :( – iCeR 2012-07-12 19:05:51

0

请记住,signed_request参数仅在第一页加载到iframe时可用 - 一旦您开始在内导航您的应用程序,就不会有更多signed_request。 (所以你必须将signed_request或类似的状态保存到会话fe中,一旦你得到它。)

如果你甚至在第一次加载时没有收到任何数据,那么var_dump中的$ _REQUEST变量,看看值是否在那里。如果是这样,那么很可能你的应用秘密是错误的 - 因为如果Facebook :: getSignedRequest无法通过使用应用秘密计算正确的哈希来验证签名请求,它将返回null。请仔细检查如果您的应用程序的秘密是真的正确。

+0

三重检查,仍然没有luck-所有的细节是100%正确。它只有一个页面加载,index.php:/ – iCeR 2012-07-12 21:23:45

+0

var_dump显示了什么? – CBroe 2012-07-12 21:24:13