我正在尝试在Google App Engine Project中使用Pyfacebook函数(https://github.com/sciyoshi/pyfacebook/)。我已经在Facebook开发人员论坛(http://forum.developers.facebook.net/viewtopic.php?pid=164613)上遵循建议,并将附加函数添加到__init__.py文件中,并将该文件复制到根部我的项目目录并将其重命名为Facebook.py。导入Facebook.py,我将以下内容添加到页面的Python类的GET(self)方法:

facebookapi = facebook.Facebook(API_KEY, SECRET)

    if not facebookapi.check_connect_session(self.request):
        path = os.path.join(os.path.dirname(__file__), 'templates/login.html')
        self.response.out.write(template.render(path, {'apikey': API_KEY}))
        return

    user = facebookapi.users.getInfo(
        [facebookapi.uid],
        ['uid', 'name', 'birthday', 'relationship_status'])[0]

    template_values = {
        'name': user['name'],
        'birthday': user['birthday'],
        'relationship_status': user['relationship_status'],
        'uid': user['uid'],
        'apikey': API_KEY
    }

    path = os.path.join(os.path.dirname(__file__), 'templates/index.html')
    self.response.out.write(template.render(path, template_values))

运行时,我会收到以下错误:

文件“ MAUT BAW08U private ids helloworld helloworld helloworld.py”,第54行,

如果不是Facebookapi.check_connect_session(self.request):attributeError:'facebook'对象没有属性'check_connect_session'

因此,它似乎正在加载Facebook API罚款,但我添加了新的方法。我在Facebook类定义的底部复制并粘贴了开发人员论坛的代码,并确保所有缩进都正确,但似乎仍然没有捡起它们。有人知道可能是什么问题吗?

谢谢

有帮助吗?

解决方案

你相信 Facebook 课程有一定的方法,但是Python确定没有。为什么?也许您拼错了方法名称,也许您没有正确的缩进 - 不看代码很难说。

您可以尝试四处浏览以验证您的假设:

import facebook
import logging

logging.warn('Facebook class: %r', dir(facebook.Facebook))
logging.warn('facebook module: %r', dir(facebook))

如果您确定自己在正确的文件上操作,则应期望将check_connect_session视为Facebook的一种方法。如果您没有添加足够的凹痕,那么您希望将check_connect_method视为Facebook模块中定义的函数。太多的凹痕会使check_connect_method成为该方法先于它之前的子函数,并且在上述日志记录中不会显示。密切注意缩进。

但是,添加一些自定义方法的更好方法可能是:

import facebook

class Facebook(facebook.Facebook):
    def check_connect_session(request):
        pass

facebookapi = Facebook(API_KEY, SECRET)

if not facebookapi.check_connect_session(...):
    ...

现在,当Facebook更新其代码时,您只需将新文件复制到位 - 无需合并您的自定义。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top