脸书登录请求/粉丝门不起作用.未定义的索引/偏移误差



我正在创建一个Facebook标签页面,我想使用风扇门控。

我以前使用过风扇门控并且没有问题,但这就像 4 个月前一样。我使用相同的PHP,但这次我遇到了问题。

请参阅下面我应用程序的基本代码和风扇门条件语句...

但是由于某种原因,我收到此错误...

注意:未定义的索引:signed_request在/home/sites/example.co.uk/www/competition/index.php 第 126 行注意:未定义的偏移量:1 in/home/sites/example.co.uk/www/competition/index.php 第 128 行喜欢

奇怪。。

我以前从未遇到过使用它的问题,Facebook是否改变了它的工作方式?

任何帮助将不胜感激。

<?php
$fb_app_id   = '000000000000000';           
$fb_secret   = '00000000000000000000000000000000';
$fb_app_url  = 'http://example.co.uk/competition';  
$fb_tab_url  = 'http://www.facebook.com/example/app_000000000000000';
$fb_channel  = '//example.co.uk'
require 'src/facebook.php';
//Create facebook application instance.
$facebook = new Facebook(array(
  'appId'  => $fb_app_id,
  'secret' => $fb_secret,
  'cookie' => true,
));
?>
<!DOCTYPE html>
<html>
<head>
    <meta property="fb:app_id" content="<?php echo $fb_app_id ?>" />
</head>
<body>
    <div id="fan-gate">
        <?php
            $signed_request = $_REQUEST["signed_request"];
            list($encoded_sig, $payload) = explode('.', $signed_request, 2);
            $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
            if (empty($data["page"]["liked"])) {
        ?>
            LIKE US...      
        <?php } else { ?>
            <strong>YOU'VE LIKED OUR PAGE, THANKS!!!</strong>
        <?php } ?>
    </div>
    <div id="fb-root"></div>
    <script>
        window.fbAsyncInit = function() {
            FB.init({
                appId: '<?php echo $fb_app_id ?>',
                channelUrl : '<?php echo $fb_channel ?>/channel.html', // Channel File
                cookie: true,
                xfbml: true,
                oauth: true,
                status: true
            });
            FB.Canvas.setAutoGrow(true);
        };
    </script>
</body>
</html>

也尝试过这个,但它总是只说第二个条件,即使我不喜欢这个页面。

<?php
$fb_app_id   = '000000000000000';           
$fb_secret   = '00000000000000000000000000000000';
$fb_app_url  = 'http://example.co.uk/competition';  
$fb_tab_url  = 'http://www.facebook.com/example/app_000000000000000';
$fb_channel  = '//example.co.uk'
require 'src/facebook.php';
//Create facebook application instance.
$facebook = new Facebook(array(
  'appId'  => $fb_app_id,
  'secret' => $fb_secret,
  'cookie' => true,
));
?>
<!DOCTYPE html>
<html>
<head>
    <meta property="fb:app_id" content="<?php echo $fb_app_id ?>" />
</head>
<body>
    <div id="fan-gate">
        <?php
        $signed_request = $facebook->getSignedRequest();
        $like_status = $signed_request["page"]["liked"];
        if($like_status){
            echo 'LIKE US...';
        } else {
            echo '<strong>YOU'VE LIKED OUR PAGE, THANKS!!!</strong>';
        }
    ?>
    </div>
    <div id="fb-root"></div>
    <script>
        window.fbAsyncInit = function() {
            FB.init({
                appId: '<?php echo $fb_app_id ?>',
                channelUrl : '<?php echo $fb_channel ?>/channel.html', // Channel File
                cookie: true,
                xfbml: true,
                oauth: true,
                status: true
            });
            FB.Canvas.setAutoGrow(true);
        };
    </script>
</body>
</html>

signed_request丢失的唯一原因是重定向。确保您的应用未重新加载或将 iframe 重定向到您网站上的其他页面。该signed_request仅在初始页面上可用,除非您在页面之间手动传递它。

我设法让风扇门控以这种方式工作。

似乎更简单,工作正常。

此外,我将页面管理员视为"喜欢"的粉丝......

<?php
$fb_app_id   = '000000000000000';           
$fb_secret   = '00000000000000000000000000000000';
$fb_app_url  = 'http://example.co.uk/competition';  
$fb_tab_url  = 'http://www.facebook.com/example/app_000000000000000';
$fb_channel  = '//example.co.uk'
require 'src/facebook.php';
//Create facebook application instance.
$facebook = new Facebook(array(
  'appId'  => $fb_app_id,
  'secret' => $fb_secret,
  'cookie' => true,
));
$signedRequest = $facebook->getSignedRequest();
?>
<!DOCTYPE html>
<html>
<head>
    <meta property="fb:app_id" content="<?php echo $fb_app_id ?>" />
</head>
<body>
    <div id="fan-gate">
        <?php if ( ( $signedRequest['page']['liked'] || $signedRequest['page']['admin'] ) == 1 ) { ?>
            Like us...
        <?php } else { ?>
            <strong>You've Liked our page</strong>
        <?php } ?>
    </div>
    <div id="fb-root"></div>
    <script>
        window.fbAsyncInit = function() {
            FB.init({
                appId: '<?php echo $fb_app_id ?>',
                channelUrl : '<?php echo $fb_channel ?>/channel.html', // Channel File
                cookie: true,
                xfbml: true,
                oauth: true,
                status: true
            });
            FB.Canvas.setAutoGrow(true);
        };
    </script>
</body>
</html>

最新更新