我正在尝试使用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代码订阅...我错了吗?
答案 0 :(得分:1)
看起来您的脚本输出的不仅仅是hub_challenge
值。
当我从发布中复制并粘贴错误消息并将其插入NotePad ++时,我将该部分显示为
received='?866531638'
^
- 所以在实际值之前似乎有一些不可见/不可显示的字符。
确保您的脚本保存为UTF-8 ,无BOM ,并且除了hub_challenge
值之外,它不会产生任何其他输出。 (这可能包括<?php … ?>
标签之外的内容。)