You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Graph API近期变更后,用户头像无法显示的技术求助

解决Graph API更新后用户头像无法显示的问题

我之前也碰到过这个情况,Facebook近期对Graph API的头像访问规则做了调整,之前靠app_scoped_profile_id拼接URL的方式已经不再适用了。下面给你两种靠谱的解决方案:

方案1:在Feed请求中直接获取头像URL(推荐)

最省心的方式是在调用Feed接口时,直接把用户头像的URL一起请求回来,不用自己手动构造链接。你只需要修改接口的fields参数,把from字段下的picture信息包含进去:

https://graph.facebook.com/me/feed?fields=id,from{id,name,picture{url}},message,story,picture,link,source...&access_token=token

接口返回的from对象里会直接带头像的可用URL,结构大概是这样的:

{
  "from": {
    "id": "USER_ID",
    "name": "用户名",
    "picture": {
      "url": "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=USER_ID&height=50&width=50&ext=123456789&hash=ABC123"
    }
  },
  // 其他Feed相关字段...
}

渲染头像的时候直接用这个URL就行:

<img class="msfb-wall-avatar" src="{{from.picture.url}}">

(根据你实际的前端渲染逻辑替换变量,比如用JavaScript遍历数据的话,就是item.from.picture.url

方案2:手动构造头像URL(需携带Access Token)

如果坚持要自己构造头像链接,现在必须在URL里带上有效的access_token,因为Facebook现在限制了未授权的头像访问。格式如下:

<img class="msfb-wall-avatar" src="https://graph.facebook.com/{{from.id}}/picture?type=square&access_token=YOUR_ACCESS_TOKEN">

这里的{{from.id}}直接用Feed接口返回的用户ID就行(不用再用app_scoped_profile_id),YOUR_ACCESS_TOKEN就是你调用Feed接口时用的那个令牌。

额外注意点

  • 确保你的access_token权限足够:如果是获取当前用户的Feed,需要user_posts权限;如果是页面Feed,需要pages_show_listpages_read_engagement权限。
  • 可以用widthheight参数精准控制头像尺寸,比如?width=60&height=60,比type=square更灵活。
  • 如果头像还是加载失败,先检查access_token是否过期,或者权限配置是否正确。

内容的提问来源于stack exchange,提问作者dev-m

火山引擎 最新活动