【问题标题】:Facebook Real Time Subscriptions Throws Exception Even when challenge is answered即使回答了挑战,Facebook 实时订阅也会引发异常
【发布时间】:2015-07-24 08:38:19
【问题描述】:

我正在尝试使用 v2.4 Graph API(在 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', received='866531638'

有人遇到过吗?

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

【问题讨论】:

    标签: facebook facebook-graph-api


    【解决方案1】:

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

    当我从您的帖子中复制并粘贴错误消息并将其插入 NotePad++ 时,我得到的部分显示为

    received='?866531638'
              ^
    

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

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

    【讨论】:

    • 你完全正确!在没有 BOM 的情况下将编码从 UTF-8 更改为 UTF-8 解决了这个问题。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多