2012-07-12 78 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