gpt4 book ai didi

javascript - 如何轻松使用 Facebook API 实时更新功能?

转载 作者:行者123 更新时间:2023-11-29 21:46:42 25 4
gpt4 key购买 nike

首先,对于在 Facebook 实时更新上发布另一个问题表示歉意。我已经阅读了许多现有的 stackoverflow 答案和有用的文章,它们很有帮助,但我似乎仍然无法弄清楚如何将所有内容放在一起。

我想做的就是在有用户或页面实时更新(状态/评论/点赞等)时触发。

我从 Realtime Updates documentation 开始并发现这两篇博客文章很方便:

据我了解,要注册实时更新,我需要:

  1. 创建 WWW Facebook 应用
  2. 将 Facebook 应用指向 callback_url
  3. callback_url 添加一个 php 脚本来处理 Facebook 调用时的 GET 请求(用于验证)和 POST 请求。
  4. 使用 Graph API (v2.3/APP_ID/subscriptions) 注册回调
  5. 将 Facebook 登录按钮添加到页面(包括所需的范围/权限)并执行登录操作

理论上,在这一点之后,Facebook 应该根据注册的对象和字段 POST 到 callback_url

我想我已经成功注册了回调。这里大致是我得到的输出(用 MY_CB_URL 替换实际的 URL):

{
"data": [
{
"object": "user",
"callback_url": "MY_CB_URL",
"fields": [
"statuses"
],
"active": true
},
{
"object": "page",
"callback_url": "MY_CB_URL",
"fields": [
"feed"
],
"active": true
}
]
}

回调 php 脚本如下所示:

<?php

define('VERIFY_TOKEN', 'vToken');

$method = $_SERVER['REQUEST_METHOD'];

if ($method == 'GET' && $_GET['hub_mode'] == 'subscribe' && $_GET['hub_verify_token'] == VERIFY_TOKEN) {

echo $_GET['hub_challenge'];

} else if ($method == 'POST') {

$out = "";

try {

$updates = json_decode(file_get_contents("php://input"), true);

$out = print_r($updates, true);

error_log('updates = ' . $out);
} catch (Exception $e) {
error_log('Caught exception: '.$e->getMessage());
$out = $e->getMessage();
}

$file = './log.txt';
$current = file_get_contents($file);
$current .= $out;
file_put_contents($file, $current);

}

?>

我遇到的问题是我在第一次设置时收到了一个 POST 请求,但之后就没有了。我没有收到任何错误,并且 API 确认回调已正确注册,所以我对我可能遗漏的内容一无所知。

我发现了 this answer并按照建议调用电话

https://graph.facebook.com/PAGE_ID/tabs?app_id=APP_ID&access_token=PAGE_ACCESS_TOKEN

得到了这样的回应:

{
"data": [
{
"id": "PAGE_ID/tabs/likes",
"name": "Likes",
"link": "https://www.facebook.com/pages/PAGE_NAME/PAGE_ID?sk=likes",
"is_permanent": true,
"position": 2,
"is_non_connection_landing_tab": false
},
{
"id": "PAGE_ID/tabs/photos",
"image_url": "https://fbcdn-photos-c-a.akamaihd.net/hphotos-ak-xaf1/t39.2080-0/851586_10151609549247733_1069686154_n.gif",
"name": "Photos",
"link": "https://www.facebook.com/pages/PAGE_NAME/PAGE_ID?sk=photos",
"application": {
"name": "Photos",
"id": "PHOTO_ID"
},
"is_permanent": false,
"position": 1,
"is_non_connection_landing_tab": false
}
]
}

所以现在我更加困惑了。

最佳答案

https://graph.facebook.com/PAGE_ID/tabs 发出 POST 请求已过时 – 您需要使用 /PAGE_ID/subscribed_apps 现在订阅页面的更新。

https://developers.facebook.com/docs/graph-api/reference/page/subscribed_apps/

关于javascript - 如何轻松使用 Facebook API 实时更新功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30921972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com