Я пытаюсь написать приложение для Facebook, используя app-engine-patch и pyFacebook.Я использую только примеры, предоставленные с каждым инструментом, и по какой-то причине он не будет работать.
Я соединил их так, как описано в принятом ответе: Facebook, Django и Google AppEngine
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 на эту ветку, возможно, у них будет лучшее решение.