【问题标题】:Facebook Matching API - Returns empty data for any other userFacebook Matching API - 返回任何其他用户的空数据
【发布时间】:2017-10-03 21:37:21
【问题描述】:

我在使用 Facebook Checkbox Plugin 将我的用户连接到 Facebook 聊天机器人时遇到问题。当他们单击并选中复选框时,我得到他们的用户参考,并向他/她发送消息,我得到用户页面范围的 id。

使用这个用户页面范围的 id,我应该能够获取用户应用范围的 id,我需要从这个用户那里获取更多信息。

为此,我使用了 facebook Matching API,它对我的​​管理员用户非常有用,但是一旦我使用任何其他用户登录,即使它注册为开发人员,我得到的数据来自匹配的 API 是空的。

[https://developers.facebook.com/docs/messenger-platform/identity/id-matching]

有人知道这里会发生什么吗?我的应用已上线(未获批准),我认为权限和令牌是正确的……如果有问题,应该是令牌问题,但我不确定。

这里是我的一些代码:

    const accessToken = config.facebook.unlimitedPageAccessToken;
  const clientSecret = config.facebook.clientSecret;
  const appsecretProof = CryptoJS.HmacSHA256(accessToken, clientSecret).toString(CryptoJS.enc.Hex);

request({
      url: 'https://graph.facebook.com/v2.10/'+ recipientId +'/ids_for_apps',
      qs: { access_token: accessToken, appsecret_proof: appsecretProof }

    }, function (error, response, body) {
      if (!error && response.statusCode == 200) {

        body = JSON.parse(body);
        console.log("data --> " + JSON.stringify(body, null, 4));
        const userAppId = body.data[0].id;
        return userAppId;
      } else {
        console.error("Error trying to translate ID's.");
      }
    });

正如我所说,当我使用管理员以外的任何其他用户登录时,我会得到以下信息:

{
  "data": []
}

【问题讨论】:

  • 您好,您有什么消息吗?我也有同样的问题,但情况正好相反。我有app scoped id,我需要得到page scoped id。它对我有用,但不适用于其他用户
  • 嗨,里奥。您需要用户在与您的页面聊天时单击“开始”按钮,或在此聊天中向您的页面写一条消息。否则,您将无法获取用户页面范围的 id,因为它不存在。
  • 哦!这不就是 Facebook Matching ID 的目的吗?要查找通过 Facebook 登录登录到您的应用程序的用户的 PSID?
  • 是的,这就是目的,但是这两个 ID 在用户登录(APP ID)或用户向您的页面(PSID)写入消息或用户单击任何为 Messenger 提供的插件 (PSID) (developers.facebook.com/docs/messenger-platform/…)

标签: facebook-graph-api


【解决方案1】:

对于每个 Facebook 页面,用户都有不同的 psid。因此,在您获得该页面范围的 ID 之前,您将无法向他们发送消息。因此,您可以做的可能是首先将用户链接到页面以初始化对话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2018-11-06
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多