[英]Facebook Graph API get First and Last name from PSID?
我已经设置了一个 FB Webhook,以便在用户向我的业务页面发送消息时通知我的技术人员。 通知有效,我收到消息和发件人 ID (PSID),但我似乎无法根据此处找到的文档获取发件人的名字和姓氏: https://developers.facebook.com/docs/messenger-platform /身份/用户配置文件
我需要将返回的“发件人 ID (PSID)”转换为名字和姓氏。 根据文档,我需要发送这样的请求:
curl -X GET "https://graph.facebook.com/<PSID>?fields=first_name,last_name,profile_pic&access_token=<PAGE_ACCESS_TOKEN>"
所以我的代码看起来像这样:
function get_basic_info($id, $access) {
$url = 'https://graph.facebook.com/'.$id.'?fields=first_name,last_name,profile_pic&access_token='.$access;
$info = json_decode(file_get_contents($url), true);
return $info;
}
然后我会调用 function 使用: $fbuser = get_basic_info($sender, $fb_access_token);
当从任何 Facebook 帐户向我的业务页面发送消息时,这将始终返回NULL ... 除了拥有业务页面的我的个人帐户。 如果我从拥有公司的个人帐户向我的公司帐户发送消息,这就是我收到的信息:
{"first_name":"Tim","last_name":"My_Last_Name","profile_pic":"Profile_Picture_URL","id":"My_FB_ID"}
我使用的访问令牌是从 App Dashboard > My_App > Messenger(在 Products 下,左侧)> Settings > Access Tokens > Generate Token(在我拥有的业务页面旁边)生成的。
我究竟做错了什么? 当我亲自向我自己的业务页面发送消息时,它会起作用,但当其他人发送消息时则不起作用。 感谢您的任何帮助!
因此,要为可能正在寻找的人更新此答案,请看这里...。不要像文档所述那样使用发件人 ID (PSID),请使用消息 ID。
function get_basic_info($id, $access) {
$url = 'https://graph.facebook.com/'.$id.'?fields=from&access_token='.$access;
$info = json_decode(file_get_contents($url), true);
return $info;
}
用法:
$fbuser = get_basic_info($message_id, $FB_PAGE_ACCESS_TOKEN);
$fb_name = $fbuser['from']['name'];
不幸的是,您无法获得个人资料图片,但这已经是我需要得到的了。
享受!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.