app-engine-patchとpyFacebookを使用してFacebookアプリを作成しようとしています。私は各ツールで提供されている例だけを使用していますが、何らかの理由で機能しません。
ここで受け入れられている回答に記載されているように、 Facebook、Django、およびGoogleAppEngineの2つを組み合わせました。
app-engine-patchは問題なく機能しているようですが、@ 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()でどのビューを装飾しても発生します
私は両方のプロジェクトの最新のものを使用していますが、なぜそれが機能しないのかわかりません。
お時間をいただき、ありがとうございました。
更新: 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の開発者にこのスレッドを紹介する必要があります。おそらく彼らはより良い解決策を持っているでしょう。