app-engine-patch i pyFacebook nie działa
Próbuję napisać aplikację na Facebooku za pomocą app-engine-patch i pyFacebook. Używam tylko przykładów dostarczonych z każdym narzędziem iz jakiegoś powodu nie zadziała.
Połączyłem te dwa elementy tak, jak opisano w zaakceptowanej odpowiedzi tutaj:Facebook, Django i Google App Engine
app-engine-patch wydaje się działać dobrze, ale kiedy próbuję użyć @ facebook.require_login (), otrzymuję to z dzienników 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'
Dzieje się tak bez względu na to, który widok ozdobię @ facebook.require_login ()
Używam najnowszego z obu projektów i nie mam pojęcia, dlaczego to nie zadziała.
Wielkie dzięki za twój czas.
AKTUALIZACJA: Zrobiłem krótką poprawkę dla pyFacebook, ale właśnie zapomniałem umieścić go z powrotem w wątku.
Teraz także jako odpowiedź, ponieważ wydaje się, że to jedyny sposób.
Jeśli zmienisz z tej linii linię 1292+ na facebooku / __ init__.py:
if params.get('expires'):
self.session_key_expires = int(params['expires'])
Do tego:
if params.get('expires'):
if params['expires'] == 'None':
params['expires'] = 0
self.session_key_expires = int(params['expires'])
To zadziała, ale to hack i może można to zrobić bardziej elegancko, ale działa. W tym wątku wskaż programistom pyFacebook, może będą mieli lepsze rozwiązanie.