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

Python调用Facebook Graph API传图遇(#324)错误的解决咨询

解决Facebook图片上传脚本的"Requires upload file"错误

原上传脚本

import facebook

def add_static_image_to_audio(text, media):
    page_access_token = "token"
    graph = facebook.GraphAPI(page_access_token)
    facebook_page_id = "1234567890"
    photo = open('example.jpg', 'rb')
    graph.put_object(facebook_page_id, "photos", message=text, file=photo.read())

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description="Simple Python script to add a static image to an audio to make a video")
    parser.add_argument("text", help="The text")
    parser.add_argument("media", help="image")
    args = parser.parse_args()
    add_static_image_to_audio(args.text, args.media)

运行错误信息

Traceback (most recent call last):
  File "C:\xampp\htdocs\laravel\storage\app\fb.py", line 19, in <module>
    add_static_image_to_audio(args.text, args.media)
  File "C:\xampp\htdocs\laravel\storage\app\fb.py", line 11, in add_static_image_to_audio
    graph.put_object(facebook_page_id, "photos", message=text, file=photo)
  File "C:\Users\Linus\AppData\Local\Programs\Python\Python310\lib\site-packages\facebook\__init__.py", line 189, in put_object
    return self.request(
  File "C:\Users\Linus\AppData\Local\Programs\Python\Python310\lib\site-packages\facebook\__init__.py", line 313, in request
    raise GraphAPIError(result)
facebook.GraphAPIError: (#324) Requires upload file

问题分析与修复方案

错误提示(#324) Requires upload file说明文件未被正确传递到API请求中,脚本存在以下问题:

  • 硬编码图片路径,未使用传入的media参数;
  • 文件传递方式不符合Facebook SDK要求,且未正确管理文件资源。

修正后的脚本

import facebook

def add_static_image_to_audio(text, media):
    page_access_token = "token"
    graph = facebook.GraphAPI(page_access_token)
    facebook_page_id = "1234567890"
    
    # 使用with语句安全打开文件,自动处理关闭逻辑
    with open(media, 'rb') as photo:
        # 推荐使用put_photo方法专门上传照片,参数更直观
        graph.put_photo(image=photo, message=text)
        
        # 也可以使用put_object方法,注意参数名是source而非file
        # graph.put_object(facebook_page_id, "photos", message=text, source=photo)

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description="向Facebook主页上传图片的Python脚本")
    parser.add_argument("text", help="图片附带的文字说明")
    parser.add_argument("media", help="要上传的图片路径")
    args = parser.parse_args()
    add_static_image_to_audio(args.text, args.media)

关键修复点

  1. 使用传入的图片路径:替换硬编码的example.jpg为命令行传入的media参数,让脚本支持任意指定图片。
  2. 安全管理文件资源:用with语句打开文件,确保操作完成后自动关闭,避免资源泄漏。
  3. 正确传递文件参数:
    • 推荐使用put_photo方法,通过image参数传递文件对象;
    • 若坚持使用put_object,需将参数名从file改为source,这是Facebook Graph API的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:55:17