如何在不使用facebook sdk的情况下将照片发布到Facebook,但只能通过POST发布到URL ..?

时间:2011-02-24 19:26:33

标签: python url facebook-graph-api

在python facebook SDK中,我们缺少上传照片,而不想使用现有的SDK上传照片。

那么如何在python中实现这些步骤?

You can publish a photo to a specific, existing photo album with a POST to http://graph.facebook.com/ALBUM_ID/photos.

curl -F 'access_token=...' \
     -F 'source=@file.png' \
     -F 'message=Caption for the photo' \
     https://graph.facebook.com/me/photos

2 个答案:

答案 0 :(得分:2)

您可以使用urllib2或海报模块发帖请求,看看这些问题:

python urllib2 file send problem

Using MultipartPostHandler to POST form-data with Python

答案 1 :(得分:2)

这不是一个廉价地完成工作但是要学习编程的地方,如果他还没有代码,那么有人会为你做你的工作。

无论如何都有一些指示:为你正在使用的任何浏览器获取自己的Tamper Data或类似的插件,并记录手动执行任务时发送的所有数据。之后你只需要使用Python urllib lib来模仿它并解析html文档以获得你需要的非静态部分。

不知道facebook(没有帐号),但你可能必须登录并保留cookie,所以这是一个非常相似的小例子。首先使用登录站点登录,然后机动到我感兴趣的站点并获取数据..

def get_site_content():
    def get_response(response):
        content = response.info()['Content-Type']
        charset = content[content.rfind('=') + 1:] # ugly hack, check orderly
        return response.read().decode(charset)  

    cj = http.cookiejar.CookieJar()
    opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
    data = urllib.parse.urlencode({ "log" : "1", "j_username" : USERNAME, "j_password" : PASSWORD })
    opener.open("url", data)  
    data = urllib.parse.urlencode({ "months" : "0" })
    resp = opener.open("url2", data)
    return get_response(resp)