Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyfacebook+;谷歌应用程序引擎:can';在facebook.py中找不到新功能_Python_Google App Engine_Facebook_Pyfacebook - Fatal编程技术网

Python pyfacebook+;谷歌应用程序引擎:can';在facebook.py中找不到新功能

Python pyfacebook+;谷歌应用程序引擎:can';在facebook.py中找不到新功能,python,google-app-engine,facebook,pyfacebook,Python,Google App Engine,Facebook,Pyfacebook,我正在尝试使用pyfacebook函数(https://github.com/sciyoshi/pyfacebook/)在谷歌应用引擎项目中。我遵循了Facebook开发者论坛上的建议(http://forum.developers.facebook.net/viewtopic.php?pid=164613)并将附加函数添加到_uinit__u;.py文件中,将该文件复制到我的项目的根目录中,并将其重命名为facebook.py。导入facebook.py后,我为页面的Python类的get(s

我正在尝试使用pyfacebook函数(https://github.com/sciyoshi/pyfacebook/)在谷歌应用引擎项目中。我遵循了Facebook开发者论坛上的建议(http://forum.developers.facebook.net/viewtopic.php?pid=164613)并将附加函数添加到_uinit__u;.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))
运行它时,我会出现以下错误:

get中第54行的文件“\much\baw08u\Private\IDS\helloworld\helloworld.py”

如果不是facebookapi。请检查连接会话(self.request): AttributeError:“Facebook”对象没有“检查连接会话”属性

因此,它似乎很好地加载了facebook API,但不是我添加的新方法。我从Facebook类定义底部的开发者论坛复制并粘贴了代码,并确保所有缩进都是正确的,但它似乎仍然没有找到它们。有人知道可能是什么问题吗

谢谢


Ben

您相信
Facebook
类有某种方法,但Python肯定没有。为什么?也许你拼错了方法名,也许你没有正确的缩进-很难说没有看到代码

你可以试着去验证你的假设:

import facebook
import logging

logging.warn('Facebook class: %r', dir(facebook.Facebook))
logging.warn('facebook module: %r', dir(facebook))
如果你确信你使用的是正确的文件,那么你应该期望看到check_connect_会话作为Facebook的一种方法。如果您没有添加足够的缩进,那么您希望看到check_connect_方法是facebook模块中定义的一个函数。太多的缩进会使check\u connect\u方法成为其前面的任何方法的子函数,并且它不会出现在上面的日志中。密切注意压痕

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

import facebook

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

facebookapi = Facebook(API_KEY, SECRET)

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

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

您是否已将方法添加到Facebook.Facebook(应该工作)或功能添加到Facebook(不应该工作,除非您使用Facebook.function\u名称)?是的,都在Facebook.Facebook中-检查缩进和所有内容。是否有人有一个修改过的_init_uuz.py的副本,我可以测试它是否与语法有关?是否有编译过的版本?删除它。不,删除所有的。pyc文件,重新启动启动器,同样的事情仍然发生!我在两台不同的电脑上试过,结果都一样。我找到了指向文件预修改版本的链接,但它们都是死链接。我尝试了警告,它说我的方法仍然不存在。我试着把它放在课堂上不同的地方,但它仍然不起作用。这里有一个到我修改过的facebook.py的链接:这些方法是从1944行开始定义的。我有种感觉,我正盯着错误,但看不见它。。。缩进太多:-)您创建了一个嵌套函数,而不是一个方法。