Джанго | ошибка регистрации django-social

Я пытаюсь добавить функцию подключения к 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


person Switch    schedule 15.04.2010    source источник
comment
127.0.0.1:8000/callback   -  person Switch    schedule 15.04.2010


Ответы (2)


Что ж, это определенно вызвано тем, что переменные POST или GET имеют неверное значение для expires. Проверьте форму, которую вы используете, и строку запроса URL, чтобы проверить это.

Если вы посмотрите на код для facebook/__init__.py, вы увидите, что он пытается установить значение для self.session_key_expires только в том случае, если params (которое происходит от request.POST или request.GET) уже имеет значение для expires.

На самом деле, может потребоваться перепроверить код, чтобы быть уверенным. Вы должны увидеть такие строки в facebook/__init__.py:

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

Если нет, то может у вас плохая версия?

update Теперь, когда я думаю об этом, сообщение об ошибке прямо говорит, что значение равно none. Это, вероятно, означает, что они не включают проверку if param.get('expires'), потому что я полагаю, что она вернет None, а затем разрешит False.

Если у вас нет самой последней копии pyfacebook, попробуйте загрузить ее еще раз.

person Jordan Reiter    schedule 15.04.2010
comment
Рад, что был полезен. Просто из любопытства, в чем была причина проблемы? - person Jordan Reiter; 05.05.2010