Pregunta

Estoy intentando escribir una aplicación de Facebook usando app-engine-patch y pyFacebook. Estoy usando nada más que los ejemplos que se proporcionan con cada herramienta y por alguna razón no va a funcionar.

he combinado los dos del mismo modo descrito en el answet aceptado aquí: Facebook, Django y Google App Engine

app-engine-patch parece que funciona muy bien, pero cuando trato de usar @ facebook.require_login () me sale esto a partir de troncos de 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'

Esta happends no importa qué punto de vista I decorar con @ facebook.require_login ()

Estoy usando lo último de ambos proyectos y no tengo ni idea de por qué no lo puedo trabajar.

Muchas gracias por su tiempo.

ACTUALIZACIÓN: Me hizo una quickfix para pyFacebook, pero simplemente se olvidó de poner de nuevo en el hilo

.

Ahora también como una respuesta, ya que parece ser la única manera.

Si cambia facebook / __ init__.py línea 1292+ de esto:

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

A esto:

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

Esto funciona, pero es un truco y tal vez se podría hacer más elegante, pero funciona. Tengo que señalar los desarrolladores pyFacebook a este tema, tal vez ellos tendrán una mejor solución.

¿Fue útil?

Solución 2

Si cambia facebook / __ init__.py línea 1292+ de esto:

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

A esto:

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

Esto funciona, pero es un truco y tal vez se podría hacer más elegante, pero funciona.

Otros consejos

No use @facebook.require_login() decorador de pyfacebook cuando se utiliza con facebook pyfacebook de conexión. El decorador está destinado a ser utilizado para una aplicación de Facebook, ya que redirige al usuario a la página de facebook si no se registran en, pero que realmente quiere redirigir al usuario a la página de inicio de sesión en su sitio si no están conectados.

Para comprobar si alguien está conectado con facebook-conectar y pyfacebook con el middleware djangofb, se llama a request.fb.check_session(request). Si check_session devuelve True entonces tienen una sesión válida. Si devuelve Falso, entonces usted necesita para redirigir al usuario a la página de inicio de sesión para que puedan hacer clic en el botón de Facebook Connect inicio de sesión que (debe) ha colocado en esa página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top