Facebook Messenger API 发件人姓名不可用

Posted

技术标签:

【中文标题】Facebook Messenger API 发件人姓名不可用【英文标题】:Facebook messenger API sender name not available 【发布时间】:2016-10-20 12:35:03 【问题描述】:

我有一个使用 Facebook Messenger API/webhook 的机器人。 当 Facebook 发送消息时,发件人只设置了 id,没有设置名称。

所以我尝试使用图形 API 来获取名称,

https://graph.facebook.com/v2.6/<sender-id>?fields=first_name,last_name&access_token=<page-token>

它给你的发件人id似乎不是真实的id,所以使用你的应用令牌不起作用,但使用页面令牌似乎也不是一直都起作用。

从我的日志中,我看到它工作了一段时间,而不是其他时间。 我得到了错误,

(#100) No matching user found

我唯一的猜测是,如果它是一个较旧的对话,它给你的 id 已经在某个地方过期,所以你无法得到名字?

其他人有这个问题,或者找到解决方法?

【问题讨论】:

我在文档中没有看到任何关于用户 id 过期/寿命短的信息(通常 Facebook 在这种情况下使用令牌而不是 id。)因为你得到的用户 id 是 page-范围内,您需要使用页面访问令牌。你确定你用对了吗? 【参考方案1】:

好的,想通了,是用户错误。

问题是我在测试页面时有另一个应用程序链接到该页面,但我没有删除 webhook。所以 webhook 被调用了两次,其中一个由于某种原因而有一个错误的令牌。

无论如何,从其他应用程序中删除 webhook 解决了这个问题。

【讨论】:

以上是关于Facebook Messenger API 发件人姓名不可用的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Messenger ID匹配API仅适用于管理员

如何在本机反应中使用 Facebook Messenger api

来自 Facebook Messenger 机器人对话的 API 身份验证

Facebook Graph API 没有返回(发件人)字段以获取评论?

在 Symfony Messenger 组件中使用独立的发件人

Facebook Messenger sdk 贴纸