我试图使用APP-发动机贴片和pyFacebook写一个Facebook应用程序。 我使用的仅仅是提供与每个工具,由于某种原因,它不会工作的例子。

我已经联合两个正如这里所接受的answet描述: 脸谱,Django中,和谷歌应用程序引擎

应用程序引擎补丁似乎工作得很好,但是当我尝试使用@ facebook.require_login()我得到这个从GAE的日志:

Exception in request:
Traceback (most recent call last):
  File "/base/data/home/apps/app-name/1.339079629847560090/common/zip-packages/django-1.1.zip/django/core/handlers/base.py", line 92, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/base/data/home/apps/app-name/1.339079629847560090/facebook/djangofb/__init__.py", line 87, in newview
    if not fb.check_session(request):
  File "/base/data/home/apps/app-name/1.339079629847560090/facebook/__init__.py", line 1293, in check_session
    self.session_key_expires = int(params['expires'])
ValueError: invalid literal for int() with base 10: 'None'

此happends无论哪个查看我装饰用@ facebook.require_login()

我使用上述两个项目的最新的,我不知道为什么它不会工作。

您的时间非常感谢。

更新:我做了一个quickfix为pyFacebook,但我只是忘了把它放回线程

现在也作为一个答案,因为它似乎是唯一的方法。

如果你改变的Facebook / __ init__.py从该线1292+:

    if params.get('expires'):
        self.session_key_expires = int(params['expires'])

要这样:

    if params.get('expires'):
        if params['expires'] == 'None':
            params['expires'] = 0   
        self.session_key_expires = int(params['expires'])

这会工作,但它是一个黑客,也许它可以更优雅的完成,但它的作品。 得点pyFacebook开发者此主题,也许他们将有更好的解决方案。

有帮助吗?

解决方案 2

如果你改变的Facebook / __ init__.py从该线1292+:

    if params.get('expires'):
        self.session_key_expires = int(params['expires'])

要这样:

    if params.get('expires'):
        if params['expires'] == 'None':
            params['expires'] = 0   
        self.session_key_expires = int(params['expires'])

这会工作,但它是一个黑客,也许它可以更优雅的完成,但它的作品。

其他提示

使用pyfacebook与Facebook连接时,不应使用pyfacebook的装饰@facebook.require_login()。该装饰是指用于一个Facebook应用程序,因为它的用户重定向到Facebook网站,如果他们还没有登录,但你真的希望将用户登录页面重定向您的网站,如果他们还没有登录。

要检查是否有人登录时使用Facebook的连接和与djangofb中间件pyfacebook,你叫request.fb.check_session(request)。如果check_session返回true,则他们有一个有效的会话。如果返回false,那么你需要将用户重定向到登录页面,使他们可以点击Facebook的连接登录按钮,你(应该)都放在该页面上。

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