如何用python3将照片上传到Facebook

2024-06-18 13:12:15 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,所以我试了所有我能在网上和论坛上找到的东西,但都没用。很多像facebook sdk之类的模块都有语法错误,因为它们是为python2.X构建的,而我使用python3(我打算保持这种方式)。到目前为止,我最好的选择是fbconsole。我可以发布简单的状态更新和这么容易,但我似乎不能上传照片!?关于这一点的一个问题是:我需要加什么fbconsole.OAUTH_范围=[]允许我验证整个照片上传jazz?我的urllib、urllib2和urllib.request.urlretrieve()所有的东西都会抛出错误。。。在

如果有人能帮我解决这个问题,我很乐意为它制作一个视频或文本教程。如果我早点想清楚,我也会这么做。祝你好运!在

这是我的一个错误:

C:\Users\Zach\Downloads\facebook-sdk-master\facebook-sdk-master>python
Python 3.3.1 (v3.3.1:d9893d13c628, Apr  6 2013, 20:30:21) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> import fbconsole
>>> fbconsole.OAUTH_SCOPE = ['publish_stream', 'read_stream']
>>> fbconsole.authenticate()
127.0.0.1 - - [30/Dec/2013 20:36:54] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [30/Dec/2013 20:36:54] "GET /?access_token=CAACjeiZB6FgIBAGkN1XsOxC4gtJ2ukeiZBnJr9sViG
QZBsV63yJFmVohvhz5meYUbMJAXWy4ZBNNsYcXoD4BgMqTjSuPP8n5U0uN8exqSZAOlUeMoYtDWElAZCQy9WMiDgNcRSVKz94oZC
qwh4uwaXPmZBuZBrgeENHCtkD5ZCWPvph9CIfZBpI9NcG7WSFeZBEdGeYZD&expires_in=4987 HTTP/1.1" 200 -
>>>
>>> fbconsole.post('/me/photos', {'message':'Test Picture', 'source':open('screenshot.jpg')})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python33\lib\site-packages\fbconsole-0.3-py3.3.egg\fbconsole.py", line 763, in post
  File "C:\Python33\lib\site-packages\fbconsole-0.3-py3.3.egg\fbconsole.py", line 673, in post
  File "C:\Python33\lib\urllib\request.py", line 471, in open
    req = meth(req)
  File "C:\Python33\lib\site-packages\fbconsole-0.3-py3.3.egg\fbconsole.py", line 142, in http_reque
st
  File "C:\Python33\lib\site-packages\fbconsole-0.3-py3.3.egg\fbconsole.py", line 168, in multipart_
encode
  File "C:\Python33\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 111: character maps to <undef
ined>
>>>

Tags: inpyfacebookegglibpackageslinesdk
2条回答

我猜你的代码是:

file = open('image.jpg', 'r')

让我们改成这样:

^{pr2}$

你可能会从facebook pythonssdk得到bug。像TypeError: sequence item 0: expected str instance, bytes found

我已经修复了几个错误并上传到这里:

https://github.com/tuanchauict/facebook-sdk-python3

你可以试试。在

演示:

token = 'get_your_user_token_or_from_Graph_API_Explorer'
graph = fb.GraphAPI(token)

file = open('test.jpg', 'rb')

graph.put_photo(file, "this is a test photo")

您可以使用python facebook sdk来实现这一点。首先安装facebook sdk: pip安装facebook sdk

然后使用以下代码块:

import facebook
import os
import sys
import io
from PIL import Image
def main():
    graph = facebook.GraphAPI(access_token='Your Access token', version='2.6')
    graph.put_photo(image=open("path to your image file", 'rb'),message='Caption of the image', profile_id='profile/page id')

if __name__ == "__main__":
    main()

生成访问令牌时,请检查以下权限: 管理页面,发布页面,发布页面

相关问题 更多 >