Pregunta

Es posible, después de iniciar sesión a través de un botón FBML de Facebook Connect, recuperar y usar los detalles de la sesión a través de PyFacebook ? ¿Puedo usar auth.getSession () de la misma manera que si hubiera disparado el inicio de sesión a través de Python?

Básicamente, estoy intentando resolver si es posible reemplazar las etapas hasta e incluyendo raw_input () en el siguiente ejemplo:

import facebook

API_KEY     =   'xxx'
SECRET_KEY  =   'xxx'

facebook = facebook.Facebook(API_KEY, SECRET_KEY)

facebook.auth.createToken()

facebook.login()

# Login to the window, then press enter
print 'After logging in, press enter...'
raw_input()

# This is where FBML button should get me

facebook.auth.getSession()
print 'Session Key:   ', facebook.session_key
print 'Your UID:      ', facebook.uid
¿Fue útil?

Solución

Usando la página Verificando el usuario de Facebook en la wiki del desarrollador. baje los métodos PyFacebook getSession , validate_signature y getLoggedInUser y junto con el código que se encuentra en example.py de PyFacebook para Django:

if 'session_key' in request.session and 'uid' in request.session:
    fb.session_key = request.session['session_key']
    fb.uid = request.session['uid']
else:

    try:
        fb.auth_token = request.GET['auth_token']
    except KeyError:
        # Send user to the Facebook to login
        return HttpResponseRedirect(fb.get_login_url())

    # getSession sets the session_key and uid
    # Store these in the cookie so we don't have to get them again
    fb.auth.getSession()
    request.session['session_key'] = fb.session_key
    request.session['uid'] = fb.uid

Obtuve la siguiente prueba rápida para que Zope3 funcione con el botón FBML:

import facebook

API_KEY     =   'your_api_key'
SECRET_KEY  =   'your_secret_key'

fb = odb.facebook.Facebook(API_KEY, SECRET_KEY)

fb_uid = self.request[API_KEY+'_user']
fb_session_key = self.request[API_KEY+'_session_key']
fb_ss = self.request[API_KEY+'_ss']
fb_signature = self.request[API_KEY] #no suffix for signature

fb.session_key = fb_session_key
fb.uid = fb_uid

fb.friends.get() # Results in list of friends

Otros consejos

No estoy seguro de que esto responda a tu pregunta y, debo admitirlo, puedo estar desviándote de ti porque soy nuevo en esto (solo hice mi propia cuenta de Facebook con Pyfacebook hace unos 30 minutos):

Primero, instalé el middleware de pyfacebook (permitiéndome llamar request.facebook en cualquier vista):

'facebook.djangofb.FacebookMiddleware'

Luego, configuro una vista con un botón de conexión de Facebook y la configuración adecuada para que redirija a donde lo necesito al completar la autorización.

En la vista de inicio de sesión de Facebook Connect, me autentico en Facebook con las cookies de Facebook conectando la variable de solicitud a request.facebook.check_session (). Si devuelve True, el objeto está listo para ser usado para recuperar datos.

def myview(request):    
    fb = request.facebook    
    ready_to_rock = fb.check_session(request)
    if ready_to_rock:
        user_info = fb.users.getInfo([fb.uid],['first_name','last_name'])
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top