当我使用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": []
}
答案 0 :(得分:0)
对于每个Facebook页面,用户都有不同的psid。因此,在您获得该页面作用域ID之前,您将无法向他们发送消息。因此,您可以做的就是首先将用户链接到页面以初始化对话。