繁体   English   中英

Facebook 图 API 从 PSID 中获取名字和姓氏?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM