4

我想在我的 facebook 粉丝专页上做一个简单的 Wall Post。我有我的 APP_ID + APP SECRET 并且我能够获得访问令牌,但我正在努力使用 facebook.GraphAPI() 这是代码:

# -*- coding: utf-8 -*-

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'
4

2 回答 2

8

PyPI 上的 Facebook 包搞砸了。不是facebook你想要的,而是facebook-sdk

确保你有正确的:

pip uninstall facebook  # Remove the broken package
pip install facebook-sdk  # Install the correct one
于 2013-09-28T11:07:29.777 回答
6

那个包不对。尝试从此github repo重新下载和安装。


我只是做了同样的事情,这是我的输出pydoc.help(facebook)(也在help交互式提示中):

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文件复制到当前目录(与问题中的文件相同)并重新运行。希望您可以规避拙劣的安装。

于 2013-09-27T21:29:43.010 回答