Facebook实时订阅引发例外即使在回答挑战时也是如此

时间:2015-07-24 08:38:19

标签: facebook facebook-graph-api

我正在尝试使用v2.4 Graph API订阅我的应用程序到Facebook的实时订阅(在fbcallback.php中创建回调函数之后),使用我的index.php页面中的代码(appid和IP)在这篇文章中显然是假的):

try {
        $response=$fb->sendRequest('POST','/1111/subscriptions',
            array(
            'object' => 'user',
        'callback_url' => 'http://111.111.111.111/fbcallback.php',
        'fields' => 'first_name',
        'verify_token' => 'thisisaverifystringtestuser',
            )
        );
    $graphNode = $response->getGraphNode();
    }catch (Facebook\Exceptions\FacebookSDKException $e) { 
echo "exception:" . $e->getMessage();  } 

虽然我确信从回调日志中Facebook到达我的回调函数并且我在其中使用了以下代码:

<?php
define('VERIFY_TOKEN', 'thisisaverifystringtestuser');                                    
$method = $_SERVER['REQUEST_METHOD'];                             

if ($method == 'GET' && $_GET['hub_mode'] == 'subscribe' &&       
    $_GET['hub_verify_token'] == VERIFY_TOKEN) {
  echo $_GET['hub_challenge'];
 } 
 ?> 

我从索引页面代码中获取消息,如下所示: 例外:(#2201)回应与挑战不匹配,预期值='866531638',收到='866531638'

有人遇到过吗?

PS我从应用程序仪表板角色创建了一个测试用户,并将他配置为在创建时订阅应用程序,并且还从仪表板获得(但未使用)此用户的访问令牌.....因为我不能在我的PHP代码订阅过程中表示特定用户我期望(或希望)这个用户被我的PHP代码订阅...我错了吗?

1 个答案:

答案 0 :(得分:1)

看起来您的脚本输出的不仅仅是hub_challenge值。

当我从发布中复制并粘贴错误消息并将其插入NotePad ++时,我将该部分显示为

received='?866531638'
          ^

- 所以在实际值之前似乎有一些不可见/不可显示的字符。

确保您的脚本保存为UTF-8 ,无BOM ,并且除了hub_challenge值之外,它不会产生任何其他输出。 (这可能包括<?php … ?>标签之外的内容。)