0

私は以下を実行しましたが、ファンとしても「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>
4

2 に答える 2

0

signed_request パラメーターは、iframe への最初のページ読み込み時にのみ使用できることに注意してください。アプリ内での移動を開始すると、signed_request はなくなります。(そのため、取得したら、signed_request などのステータスをセッション fe に保存する必要があります。)

最初のロードでもデータが取得されない場合は、$_REQUEST 変数の内容を var_dump して、値があるかどうかを確認します。そうである場合、アプリ シークレットが間違っている可能性が高くなります。これは、Facebook::getSignedRequest が、アプリ シークレットを使用して正しいハッシュを計算することによって署名された要求を検証できない場合、null を返すためです。アプリ シークレットが本当に正しいかどうかを再確認してください。

于 2012-07-12T20:06:42.307 に答える
0

ここで説明する方法は、通常、ユーザーがページのファンであるかどうかを調べるためのトリックを行います。

あなたのやり方でやりたいのであれば、var_dump($like_status)何らかの値を割り当てた後に を提供していただけますか?

于 2012-07-12T18:51:21.077 に答える