【问题标题】:Django | django-socialregistration error姜戈 | django-socialregistration 错误
【发布时间】:2010-04-15 17:49:15
【问题描述】:

我正在尝试将 facebook 连接功能添加到我的网站,我决定使用django socialregistration。所有设置包括pyfacebook,这是我的源代码。

settings.py

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'facebook.djangofb.FacebookMiddleware',
    'socialregistration.middleware.FacebookMiddleware',
)

urls.py

(r'^callback/$', 'fbproject.fbapp.views.callback'),

views.py

def callback(request):
    return render_to_response('canvas.fbml')

模板

<html>

<body>
{% load facebook_tags %}
{% facebook_button %}
{% facebook_js %}
</body>

</html>

但是当我指向 URL 时,我收到了这个错误

Traceback (most recent call last):

  File "C:\Python26\lib\site-packages\django\core\servers\basehttp.py", line 279, in run
    self.result = application(self.environ, self.start_response)

  File "C:\Python26\lib\site-packages\django\core\servers\basehttp.py", line 651, in __call__
    return self.application(environ, start_response)

  File "C:\Python26\lib\site-packages\django\core\handlers\wsgi.py", line 241, in __call__
    response = self.get_response(request)

  File "C:\Python26\lib\site-packages\django\core\handlers\base.py", line 73, in get_response
    response = middleware_method(request)

  File "build\bdist.win32\egg\socialregistration\middleware.py", line 13, in process_request
    request.facebook.check_session(request)

  File "C:\Python26\lib\site-packages\facebook\__init__.py", line 1293, in check_session
    self.session_key_expires = int(params['expires'])

ValueError: invalid literal for int() with base 10: 'None'

Django 1.1.1 Python 2.6.2

【问题讨论】:

标签: django facebook


【解决方案1】:

嗯,这肯定是因为 POST 或 GET 变量的 expires 值不正确。检查您正在使用的表单和 URL 的查询字符串以进行检查。

如果您查看facebook/__init__.py 的代码,您会发现它只会尝试为self.session_key_expires 设置一个值,如果params(来自request.POSTrequest.GET)已经有一个值expires.

实际上,可能需要仔细检查代码才能确定。您应该在facebook/__init__.py 中看到这样的行:

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

如果没有,也许你的版本不好?

更新 现在我想起来了,错误消息明确表示该值为无。这可能意味着他们不包括检查 if param.get('expires'),因为我相信这会返回 None 然后解析为 False

除非您拥有最新的 pyfacebook,否则请尝试重新下载。

【讨论】:

  • 很高兴我能帮上忙。只是出于好奇,问题的原因是什么?
【解决方案2】:

这是 pyfacebook 中的一个错误。见http://github.com/sciyoshi/pyfacebook/issues#issue/26

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 2012-01-25
    • 1970-01-01
    • 2020-08-17
    • 2018-02-11
    • 2022-06-17
    • 1970-01-01
    • 2013-02-11
    • 2014-07-20
    相关资源
    最近更新 更多