You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Facebook JavaScript SDK(v19.0)上传本地图片?原端点已弃用

替代弃用端点的Facebook图片最新上传方案

针对你提到的/{album_id}/photos和/me/photos直接FormData上传端点被弃用的问题,目前Facebook官方推荐以下两种可行的图片上传方式:

1. 官方推荐:两步媒体上传流程(支持本地图片直接上传)

这是Graph API最新的标准上传方式,无需先将图片传到第三方服务器:

步骤1:创建上传会话

先向/{user-id}/media端点发送POST请求,初始化上传会话,获取上传所需的会话ID和上传地址:

curl -X POST "https://graph.facebook.com/v18.0/{user-id}/media" \
  -H "Content-Type: application/json" \
  -d '{
    "file_type": "image/jpeg",
    "file_name": "my-photo.jpg"
  }' \
  -d "access_token={你的用户访问令牌}"

响应会返回upload_session_id、upload_url和creation_id三个关键参数,保存好这些值。

步骤2:上传本地图片二进制数据

使用步骤1拿到的upload_url,发送PUT请求(注意是PUT方法),将本地图片以二进制形式上传:

curl -X PUT "{步骤1返回的upload_url}" \
  -H "Content-Type: image/jpeg" \
  --data-binary "@本地图片的绝对路径.jpg"

步骤3:发布图片到相册

上传完成后,向/{user-id}/media_publish端点发送POST请求,将图片正式发布到目标相册:

curl -X POST "https://graph.facebook.com/v18.0/{user-id}/media_publish" \
  -d "creation_id={步骤1返回的creation_id}" \
  -d "album_id={目标相册ID(可选,默认上传到用户默认相册)}" \
  -d "access_token={你的用户访问令牌}"

执行完这一步,图片就会正式出现在指定相册中,响应会返回图片的ID。

2. 简易替代方案:先传自有服务器拿公开URL

如果觉得两步流程太繁琐,可以先把本地图片上传到你自己的服务器,生成一个可公开访问的URL,然后通过以下方式使用:

  • 调用/me/photos端点(该端点目前仅支持传入url参数,不再接受FormData):
curl -X POST "https://graph.facebook.com/v18.0/me/photos" \
  -d "url=https://你的服务器域名/图片路径.jpg" \
  -d "access_token={你的用户访问令牌}"
  • 对于Facebook社交插件,直接用这个公开URL作为og:image的元数据值,满足插件对URL的要求。

关键注意事项

  • 确保你的访问令牌拥有user_photos(用户上传)或pages_manage_posts(页面上传)等必要权限,权限不足会导致请求失败。
  • 必须使用Graph API的最新版本(当前为v18.0),旧版本的相关端点可能已被彻底移除。
  • 上传二进制图片时,Content-Type要和图片实际类型匹配(如PNG图用image/png)。

内容的提问来源于stack exchange,提问作者SKB_BGPL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:55:18