我想在我的 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 文件复制到你的当前目录(与问题中的文件相同),然后重新运行。希望你能绕过失败的安装。