脸书$ facebook-> getSignedRequest;错误

问题描述

| 我试图将此脚本添加到我在Facebook上的iframe应用中,但似乎无法正常工作:
    $signed_request = $facebook->getSignedRequest();
$like_status = $signed_request[\"page\"][\"liked\"];
// If a fan is on your page
if ($like_status) {
echo 123;
} else {
// If a non-fan is on your page
echo 456;
}
我正在放置正确的应用程序ID和密钥,并以正确的方式即时调用facebook.PHP。我没有收到任何错误或警告,只是该脚本无法正常工作。
$like_status
不返回任何内容 脚本改变了吗?还有其他版本吗? 谢谢 编辑。更多代码
<?PHP
require \'facebook.PHP\';
$app_id = \"11549508592\";
$app_secret = \"d898cb58b16f2aaaaaaaaaaaaaa\";
$facebook = new Facebook(array(
    \'appId\' => $app_id,\'secret\' => $app_secret,\'cookie\' => true
));
$signed_request = $facebook->getSignedRequest();
$like_status = $signed_request[\"page\"][\"liked\"];
echo \"<br>like status = $like_status\";
?>
    

解决方法

从Facebook调用时,Facebook会将签名的请求发送到您的页面。 所以:
$signed_request = $_REQUEST[\"signed_request\"];
list($encoded_sig,$payload) = explode(\'.\',$signed_request,2);
$data = json_decode(base64_decode(strtr($payload,\'-_\',\'+/\')),true);
    ,不久前,我遇到了类似的问题-解决方案是为Tab或/和canvas页面指定完整的URL,以接收签名的请求。 示例:使用http://myapp.com/myapp/index.php,http://myapp.com/myapp/的版本     ,如果您的画布(或页面选项卡)URL不是最终URL,则
$_REQUEST[\'signed_request\']
可能为空,并重定向到其他URL,因为Facebook仅将签名的请求发布一次。重定向时,发布的值将丢失。 如果您可以控制重定向,则在重定向的URL中添加“ 5”(您可能还需要传递其他自定义GET参数)     ,facebook php sdk的版本是什么? 检查您的Web服务器中的access_log和error_log 您是否缺少一些“;”“?     ,不知道这里出了什么问题,但这是一个可以使用的基本页面。 确保最新版本的facebook.php和base_facebook.php在同一目录中。您可以在这里找到SDK:https://github.com/facebook/php-sdk 所有,请记住在所有111111111111111所在的位置输入应用程序ID和密码
<?php 

require \'facebook.php\';

$app_id =\"11111111111111111\";
$app_secret = \"11111111111111111111111111\";

$facebook = new facebook(array(
    \'appId\' => $app_id,\'secret\' => $app_secret,\'cookie\' => true
));

$signed_request = $facebook->getSignedRequest();
$page_id = $signed_request[\"page\"][\"id\"];
$page_admin = $signed_request[\"page\"][\"admin\"];
$like_status = $signed_request[\"page\"][\"liked\"];
$country = $signed_request[\"user\"][\"country\"];
$locale = $signed_request[\"user\"][\"locale\"];



?>

<!DOCTYPE html>  
<html lang=\"en\">  
    <head>
    <meta charset=\"utf-8\"/>
    <title>untiteled</title>


    <script type=\"text/javascript\">
        window.fbAsyncInit = function() {
            FB.Canvas.setSize(); 
        }

    </script>


</head>
<body>
    <div class=\"wrapper\">

        <?php if(!$like_status):?> 
            <div class=\"likearrow\"><div><div></div></div></div>
            <p id=\"like\">Click \"<b>like</b>\" if you want to become a fan of this app</p>
        <?php endif; ?>

        <p>Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

    </div>

<script src=\"http://connect.facebook.net/en_US/all.js\"></script>
<script>
FB.init({
    appId: \'111111111111111111111\',status: true,cookie: true,xfbml: true

});
</script>       
</body>
      ,不幸的是,我有同样的问题。 经过数小时的尝试来解决它,我终于创建了一个新的应用程序,并且设置完全相同。我将代码中的密钥和秘密更新为新的密码和密码-第一次尝试时,密码和密码就像是一种魅力。 绝对是Facebook问题。也许重置App ID和密码也可以,但是我没有尝试过。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...