【发布时间】: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/…)