Джанго | ошибка социальной регистрации - PullRequest
0 голосов
/ 15 апреля 2010

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

Template

<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'

Джанго 1.1.1 Python 2.6.2

Ответы [ 2 ]

0 голосов
/ 03 июня 2010

Это ошибка в pyfacebook. Смотри http://github.com/sciyoshi/pyfacebook/issues#issue/26

0 голосов
/ 15 апреля 2010

Ну, это определенно вызвано, потому что переменные 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'])

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...