Facebook Matching API - 返回任何其他用户的空数据

时间:2017-10-03 21:37:21

标签: facebook-graph-api

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

使用这个用户页面范围的id,我应该能够获得用户app-scoped 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": []
}

1 个答案:

答案 0 :(得分:0)

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