2010-04-15 73 views
0

我想將facebook連接功能添加到我的網站,我決定使用django socialregistration。所有設置包括pyfacebook,這裏是我的源代碼。Django | django-socialregistration error

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

+0

你打算使用哪個URL? – 2010-04-15 18:35:27

+0

http://127.0.0.1:8000/callback/ – Switch 2010-04-15 18:51:23

回答

0

好,這肯定是由於POST或GET變量對於expires有不良的值。檢查您使用的表單和網址的查詢字符串來檢查。

如果你看一下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副本,否則請嘗試再次下載。

+0

我正在使用最新版本.. – Switch 2010-04-16 04:06:04

+0

很高興我很樂於助人。出於好奇,問題的原因是什麼? – 2010-05-04 20:41:26

相關問題