【问题标题】:Facebook real time page update phpFacebook实时页面更新php
【发布时间】:2015-04-05 20:54:59
【问题描述】:

这是我对stackoverflow的第一个问题,所以如果有什么问题请指教.. 那么问题是Facebook实时更新: 我已经成功创建了对页面的订阅,它是管理员用户(创建了测试页面和测试应用程序),用户已同意对 manage_page、read_stream、read_friendlist、read_insights、publish_actions 和大量用户数据(关于、电子邮件等)的权限 当我使用边缘/订阅查询 GET to Graph api 时,我得到了结果:

{
  "data": [
    {
      "object": "user", 
      "callback_url": "LIVE_CALLBACK_URL", 
      "fields": [
        "feed"
      ], 
      "active": true
    }, 
    {
      "object": "page", 
      "callback_url": "LIVE_CALLBACK_URL", 
      "fields": [
        "built", 
        "description", 
        "email", 
        "feed", 
        "location", 
        "name", 
        "personal_info", 
        "written_by"
      ], 
      "active": true
    }
  ]
}

所以,这已经解决了,之后我搜索了为什么 Facebook 没有向我发送任何更新(我登录到 somefile.txt)所以我发现你需要使用 /tabs 查询 Graph api 来创建页面选项卡对于我的 api。当我查询它返回“成功”以便创建它时(无法找到它的存储位置,但它工作......)。 之后,我在我的个人资料上创建了一些数据,以进行测试,还在页面上查看 Facebook 是否正在发送任何更新,并且它突然发送了一个更新,该更新是对我的用户个人资料帖子的评论(在时间轴上共享)。 回应是:

14:17 05.02.2015
Array
(
    [object] => user
    [entry] => Array
        (
            [0] => Array
                (
                    [uid] => ****my_fb_id****
                    [id] => ****my_fb_id - not_someone_else****
                    [time] => 1423146339
                    [changed_fields] => Array
                        (
                            [0] => feed
                        )

                )

        )

)

所以 Facebook 发送了空的提要,没关系,可能是一些权限或其他东西,但在那之后我发表了更多的帖子,并且 ppl 对此发表了评论(在用户个人资料和测试页面上)但 Facebook 没有发送任何更新,或对我的网页的任何调用。 那么过去有没有人遇到过这个问题,他是如何解决的? 从 Facebook 接收更新的部分是:

$method = $_SERVER['REQUEST_METHOD']; 
    if(isset($_GET['hub_mode']) && isset($_GET['hub_verify_token'])){
          if (trim($method) == 'GET' && trim($_GET['hub_mode']) == 'subscribe' && trim($_GET['hub_verify_token']) == VERIFY_TOKEN) {
            print $_GET['hub_challenge'];
          }
      }
      else if ($method == 'POST') {      
        $updates = json_decode(file_get_contents("php://input"), true); 
            $file = 'log.txt';
            $current = file_get_contents($file);
            @$results = print_r($updates,true);
            $current .=  $results;
            file_put_contents($file, $current);                             
    }

我已尽我所能详细说明我的问题...已搜索但并不真正理解为什么它不起作用。

【问题讨论】:

  • 您不需要页面标签应用程序。
  • 如果它没有向网页发送任何更新(在这里看到link),这就是我添加页面选项卡的原因,它起作用了,但只有一次......
  • 这种订阅页面实时更新的方式已经过时了。在此处查看当前方法:developers.facebook.com/docs/graph-api/real-time-updates/v2.2
  • @CBroe,建立订阅的新方法是什么?通过一些框架?
  • 你点击我发布的链接并阅读它怎么样......?

标签: php facebook facebook-graph-api real-time subscription


【解决方案1】:

除了使用@CBroe 概述的过时方法之外,我认为您有一个误解:Facebook 不会向您发送已更改的数据,而是对象(以及它的字段/边缘)发生的变化用户对象更改。

对于页面,您可以自己接收更改(changed_fields 与 FB 请求中的changes 字段)。

成功创建订阅后,Facebook 会在每次发生更改(所选字段或边缘)时向您的回调 URL 发出 HTTP POST 请求。

这意味着您需要根据从 Facebook 获得的信息对象构建单独的请求。在您的示例中,这将是对用户供稿的请求

GET /{user_id}/feed

查询最近的更改。

【讨论】:

  • 建立订阅的新方法是什么?通过一些框架?感谢您的澄清,从没想过 Facebook 会进行这种更新,在这种情况下,它只工作了一次 :) 为什么页面没有任何更新?
  • 所以我每次收到订阅时都必须创建一个新订阅?关于接收的部分只是为了测试它是否有效......例如我从 fb 获取更新,用我得到的边查询图形,然后处理该查询,然后重新创建订阅?
  • 不,每个对象/应用订阅一次就足够了。这一切都在文档中!
  • 谢谢伙计,帮了我很多,让它工作,它正在将更新发送到日志文件:) 对不起一些愚蠢的问题,只是需要有人指导我一点……万分感谢! :D
猜你喜欢
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 2015-12-11
  • 2013-07-01
相关资源
最近更新 更多