【发布时间】:2016-03-27 10:15:16
【问题描述】:
我已经在网上广泛搜索了一个通过 Python API (Python for Facebook) 将照片上传到 facebook 的仍然有效的示例。以前在 stackoverflow 上有人问过这样的问题,但我找到的答案都没有了。
我的工作是:
import facebook as fb
cfg = {
"page_id" : "my_page_id",
"access_token" : "my_access_token"
}
api = get_api(cfg)
msg = "Hello world!"
status = api.put_wall_post(msg)
我将 get_api(cfg) 函数定义为 this
graph = fb.GraphAPI(cfg['access_token'], version='2.2')
# Get page token to post as the page. You can skip
# the following if you want to post as yourself.
resp = graph.get_object('me/accounts')
page_access_token = None
for page in resp['data']:
if page['id'] == cfg['page_id']:
page_access_token = page['access_token']
graph = fb.GraphAPI(page_access_token)
return graph
这确实会在我的页面上发布消息。 但是,如果我想上传图片,一切都会出错。
# Upload a profile photo for a Page.
api.put_photo(image=open("path_to/my_image.jpg",'rb').read(), message='Here's my image')
我得到了可怕的 GraphAPIError: (#324) 需要上传文件,stackoverflow 上的解决方案都不适合我。 如果我改为发出以下命令
api.put_photo(image=open("path_to/my_image.jpg",'rb').read(), album_path=cfg['page_id'] + "/picture")
我得到 GraphAPIError: (#1) 无法获取图片,我也无法找到解决方案。
有人可以为我指出正确的方向,为我提供一个当前有效的示例吗?将不胜感激,谢谢!
【问题讨论】:
-
图像必须是文件对象而不是上下文,而且您的行包含错误的单引号。未经测试,您应该尝试:
api.put_photo(image=open("path_to/my_image.jpg",'rb'), message='Here\'s my image'). -
@KlausD。是的,我在发布问题的那一刻就看到了错误的引号,但为时已晚。但是,在我的真实代码中,我没有这样的标记。如果我尝试你的建议 api.put_photo(image=open("path_to/my_image.jpg",'rb'), message='Any message') 我仍然得到 GraphAPIError: (#324) Requires upload file i> 不过谢谢你的建议!
-
你能列出你正在使用的文件和目录结构以及你的python调用从哪个目录开始
-
@phwd 我的 main.py 文件位于我的 facebook 文件夹所在的同一文件夹中(从 Facebook 的 Python 的 git 页面复制)此外,我将完整路径写入我的图像,如例如:“Drive:/folder/folder/image.jpg” 因此,我的工作文件夹包含以下 main.py image.jpg facebook(文件夹) facebook 文件夹包含 init.py 版本。 py 希望有帮助!
-
在图片所在的文件夹中尝试
curl -F 'source=@my_image.jpg' 'https://graph.facebook.com/me/photos?access_token=YOUR_TOKEN'。如果仍然返回 324 错误,则问题出在照片上。
标签: python facebook facebook-graph-api upload photo