如何在 Python 中发布 Facebook 状态

我想在我的 Facebook 粉丝页上发布一个简单的状态。我有 APP_ID 和 APP_SECRET ,并且能够获取访问令牌,但我在使用 facebook.GraphAPI() 时遇到了困难。

以下是代码:

import urllib
import facebook

FACEBOOK_APP_ID = '12345'
FACEBOOK_APP_SECRET = '123456789'
FACEBOOK_PROFILE_ID = '321321321321'
oauth_args = dict(
  client_id = FACEBOOK_APP_ID,
  client_secret = FACEBOOK_APP_SECRET,
  grant_type = 'client_credentials')
oauth_response = urllib.urlopen('https://graph.facebook.com/oauth/access_token?'
  + urllib.urlencode(oauth_args)).read()

# oauth_response looks like this:
# access_token=2732467743847839726|3gddzdg3Wl-5S_Go      

attach = {
  "name": 'Hello',
  "link": 'http://www.link.com',
  "caption": 'test',
  "description": 'some test',
  "picture" : 'http://img/picture.png',
}

facebook_graph = facebook.GraphAPI(oauth_response.split('=')[1])
try:
    response = facebook_graph.put_wall_post('', attachment=attach)
except facebook.GraphAPIError as e:
    print e

运行脚本时,出现以下错误:

Traceback (most recent call last):
  File "fb.py", line 27, in <module>
    facebook_graph = facebook.GraphAPI(oauth_response.split('=')[1])
AttributeError: 'module' object has no attribute 'GraphAPI'

我已经在 Windows 和 Ubuntu 机器上尝试了这段代码,结果都是一样的。我尝试重新安装 facebook 模块,但没有用。有没有人知道如何解决这个问题?

编辑:

当我添加 import pydoc; pydoc.help(facebook) 时,输出如下:

Help on package facebook:

NAME
    facebook - TODO: Document your package.

FILE
    c:\python26\lib\site-packages\facebook-0.0-py2.6.egg\facebook\__init__.py

PACKAGE CONTENTS


DATA
    __loader__ = <zipimporter object "C:\Python26\lib\site-packages\facebo...
    __version__ = 'TODO: Enter a version'

VERSION
    TODO: Enter a version


Traceback (most recent call last):
  File "fb.py", line 29, in <module>
    facebook_graph = facebook.GraphAPI(oauth_response.split('=')[1])
AttributeError: 'module' object has no attribute 'GraphAPI'

2、解决方案

答案 1:

PyPI 上的 Facebook 包有问题。你想要安装的不是 facebook,而是 facebook-sdk。

确保你安装了正确的包:

pip uninstall facebook  # 卸载损坏的包
pip install facebook-sdk  # 安装正确的包

答案 2:

这个包不正确。尝试从这个 github 仓库重新下载并安装。

我刚刚做了同样的操作,这是我从 pydoc.help(facebook)(交互式提示符中的帮助)得到的输出:

Help on module facebook:

NAME
    facebook - Python client library for the Facebook Platform.

FILE
    /usr/lib/python2.7/site-packages/facebook.py

DESCRIPTION
    This client library is designed to support the Graph API and the
    official Facebook JavaScript SDK, which is the canonical way to
    implement Facebook authentication. Read more about the Graph API at
    http://developers.facebook.com/docs/api. You can download the Facebook
    JavaScript SDK at http://github.com/facebook/connect-js/.

    If your application is using Google AppEngine's webapp framework, your
    usage of this module might look like this:

    user = facebook.get_user_from_cookie(self.request.cookies, key, secret)
    if user:
        graph = facebook.GraphAPI(user["access_token"])
        profile = graph.get_object("me")
        friends = graph.get_connections("me", "friends")

CLASSES
    __builtin__.object
        GraphAPI
    exceptions.Exception(exceptions.BaseException)
        GraphAPIError

    class GraphAPI(__builtin__.object)
     |  A client for the Facebook Graph API.
...

所以它没有正确安装。

我建议你将 facebook.py 文件复制到你的当前目录(与问题中的文件相同),然后重新运行。希望你能绕过失败的安装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值