จังโก้ | ข้อผิดพลาดในการลงทะเบียน 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'

จังโก้ 1.1.1 หลาม 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'])

ถ้าไม่บางทีคุณอาจมีเวอร์ชันที่ไม่ดี?

อัปเดต ตอนนี้ฉันคิดได้แล้ว ข้อความแสดงข้อผิดพลาดระบุอย่างชัดเจนว่าไม่มีค่า ซึ่งอาจหมายความว่าพวกเขาไม่ได้รวมเช็ค if param.get('expires') ไว้ด้วยเพราะฉันเชื่อว่าจะส่งคืน None จากนั้นจึงแก้ไขเป็น False

หากคุณไม่มี pyfacebook เวอร์ชันล่าสุด ให้ลองดาวน์โหลดอีกครั้ง

person Jordan Reiter    schedule 15.04.2010
comment
ดีใจที่ได้ช่วยเหลือ แค่อยากรู้ว่าอะไรคือสาเหตุของปัญหา? - person Jordan Reiter; 05.05.2010