如何让Fandjango正常工作?
Fandjango 是一个可以让 Django 使用 Facebook Graph API 的工具,看起来很不错,所以我用 pip 安装了它,准备开始使用。结果我尝试按照说明文档中的基本示例来操作,但遇到了一个错误,提示我在 settings.py 文件中缺少一些设置,而这些设置在我找到的pydjango 文档里并没有提到。于是我稍微查了一下,发现了fandjango-example。
这个示例看起来比较新,所以我按照那个页面的建议,在我的 settings.py 文件中添加了一些设置:
FACEBOOK_APPLICATION_ID = 181259711925270
FACEBOOK_APPLICATION_SECRET_KEY = '214e4cb484c28c35f18a70a3d735999b'
FACEBOOK_APPLICATION_NAMESPACE = 'myapp'
MIDDLEWARE_CLASSES = [
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'fandjango.middleware.FacebookMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
]
可惜的是,这又给我带来了一个新的错误:
ImproperlyConfigured: Error importing middleware facebook.djangofb: "No module named facebook.djangofb"
我继续在网上搜索,看到有人问是否安装了 pyfacebook。我查看了一下我的“pip freeze”,发现没有这个库,于是我去 GitHub 上下载了它:
pip install git+git://github.com/sciyoshi/pyfacebook.git
但现在我怀疑我引用了错误的 Facebook 对象,因为我得到了:
'Facebook' object has no attribute 'user'
那么,我到底哪里出错了呢?
我在 OS X 上运行 Python 2.6,
Django==1.3.1
South==0.7.3
certifi==0.0.6
distribute==0.6.19
facepy==0.6.4
fandjango==4.0.2
nose==1.1.2
pyfacebook==1.0a2 # will probably kill this
requests==0.8.9
wsgiref==0.1.2
(我也在 AWS 的 Ubuntu 微型实例上测试过,结果是一样的)
1 个回答
2
Fandjango和pyfacebook没有关系,也不依赖于pyfacebook。实际上,这两个库是互相不兼容的,因为它们都在请求对象中添加了一个facebook
属性。如果你想使用Fandjango,就需要把pyfacebook从你的中间件类中移除。
请查看文档,里面有安装和配置的说明。