pyfacebook + Google App Engine:在Facebook.py中找不到新功能
-
24-10-2019 - |
题
我正在尝试在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更新其代码时,您只需将新文件复制到位 - 无需合并您的自定义。