سؤال

أحاول كتابة تطبيق Facebook باستخدام App-Engine-Patch و Pyfacebook. لا أستخدم شيئا سوى الأمثلة المقدمة بكل أداة ولسبب ما لن يعمل.

لقد جمعت الاثنان كما هو موضح في الإجابة المقبولة هنا:Facebook و Django و Google App Engine

يبدو أن التطبيقات - التصحيح يعمل بشكل جيد ولكن عندما أحاول استخدام @ facebook.require_login () أحصل على هذا من سجلات GAE:

Exception in request:
Traceback (most recent call last):
  File "/base/data/home/apps/app-name/1.339079629847560090/common/zip-packages/django-1.1.zip/django/core/handlers/base.py", line 92, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/base/data/home/apps/app-name/1.339079629847560090/facebook/djangofb/__init__.py", line 87, in newview
    if not fb.check_session(request):
  File "/base/data/home/apps/app-name/1.339079629847560090/facebook/__init__.py", line 1293, in check_session
    self.session_key_expires = int(params['expires'])
ValueError: invalid literal for int() with base 10: 'None'

يحدث هذا بغض النظر عن الرؤية التي أزالتها مع @ facebook.require_login ()

أنا أستخدم الأحدث من كلا المشروعين وليس لدي أي فكرة عن سبب عدم العمل.

شكرا جزيلا على وقتك.

تحديث: لقد قمت بإجراء QuickFix ل Pyfacebook، لكنني نسيت فقط وضعه في الخيط.

الآن أيضا كإجابة، لأنها تبدو هي الطريقة الوحيدة.

إذا قمت بتغيير خط Facebook / __ INIT__.PY 1292+ من هذا:

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

الى هذا:

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

سيعمل ذلك، لكنه اختراق وربما يمكن القيام به أكثر أناقة، لكنه يعمل. فلدي نقطة pyfacebook devs لهذا الموضوع، ربما سيكون لديهم حلا أفضل.

هل كانت مفيدة؟

المحلول 2

إذا قمت بتغيير خط Facebook / __ INIT__.PY 1292+ من هذا:

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

الى هذا:

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

سيعمل ذلك، لكنه اختراق وربما يمكن القيام به أكثر أناقة، لكنه يعمل.

نصائح أخرى

يجب أن لا تستخدم ديكور Pyfacebook @facebook.require_login() عند استخدام Pyfacebook مع Facebook-Connect. من المفترض أن يتم استخدام Decorator لتطبيق Facebook، حيث أنه يعيد توجيه المستخدم إلى موقع Facebook إذا لم يتم تسجيل الدخول، لكنك تريد حقا إعادة توجيه المستخدم إلى صفحة تسجيل الدخول الخاصة بك على موقعك إذا لم يتم تسجيل الدخول.

للتحقق مما إذا كان شخص ما يتم تسجيل الدخول باستخدام Facebook-Connect و Pyfacebook مع الوسيطة DJangofB، يمكنك الاتصال request.fb.check_session(request). وبعد إذا check_session إرجاع صحيح ثم لديهم جلسة صالحة. إذا أرجع FALSE، فأنت بحاجة إلى إعادة توجيه المستخدم إلى صفحة تسجيل الدخول الخاصة بك حتى يتمكنوا من النقر فوق الزر Facebook Connect تسجيل الدخول الذي قمت به (يجب) وضعه في تلك الصفحة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top