Как ребята из Facebook написали здесь , они больше не будут поддерживать Python Facebook SDK, поэтому лучше делать запросы с помощью собственных инструментов Python.
Создание альбома:
import urllib,urllib2
access_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
path = "me/albums"
post_args = {'access_token':access_token,'name':"Test Album5", 'message':"Test Album 5"}
post_data = urllib.urlencode(post_args)
file = urllib2.urlopen("https://graph.facebook.com/" + path + "?" , post_data)
response = file.read()
>>>response
'{"id":"XXXXXX702571"}'
Загрузка изображения:
Я не нашел краткого способа отправки данных из нескольких частей / форм с помощью urllib2, поэтому я использовал пример из этого ответа https://stackoverflow.com/a/6843405/592737
import pycurl
import cStringIO
url = 'https://graph.facebook.com/ALBUM_ID/photos'
file ='/path/to/img.jpg'
response = cStringIO.StringIO()
c = pycurl.Curl()
values = [
('file' , (c.FORM_FILE, file)),
('access_token' , access_token),
('message' , 'Image Message'),
]
c.setopt(c.POST, 1)
c.setopt(c.URL,url)
c.setopt(c.HTTPPOST, values)
#c.setopt(c.VERBOSE, 1)
c.setopt(c.WRITEFUNCTION, response.write)
c.perform()
c.close()
>>>response.getvalue()
{"id":"XXXXXX07961"}
Ноесли вы используете какой-то форк Facebook python-sdk (например, https://github.com/pythonforfacebook/facebook-sdk), вы можете сделать это более коротким способом:
import facebook
access_token = "XXXXXXXXXXXXXXXXXXXXXXXX"
graph = facebook.GraphAPI(access_token)
resp = graph.put_object("me", "albums", name="Test Album",message="Test description")
graph.put_photo(open('/path/to/img.jpg'), 'Look at this cool photo!', resp['id'])
>>> _
{'id': '4394545113756'}