Python - Inicio de sesión global de Facebook

Lo que quiero hacer en mi aplicación Flask/Python es similar a lo que he hecho en PHP. En PHP, pude crear un nuevo objeto de Facebook y si el usuario ya había autorizado la aplicación y ya había iniciado sesión en su cuenta de Facebook, su información se cargaría en el objeto y no tendría que hacer clic en "Iniciar sesión". con Facebook" en el sitio; se daría cuenta automáticamente de que ya están conectados y autorizados.

Con mi aplicación Python, estoy usando https://github.com/pythonforfacebook/facebook-sdk/

@app.route('/login')
def login():
    return facebook.authorize(callback=url_for('facebook_authorized',
        next=request.args.get('next') or request.referrer or None,
        _external=True))


@app.route('/login/authorized')
@facebook.authorized_handler
def facebook_authorized(resp):
    if resp is None:
        return 'Access denied: reason=%s error=%s' % (
            request.args['error_reason'],
            request.args['error_description']
        )
    session['oauth_token'] = (resp['access_token'], '')
    me = facebook.get('/me')

    usr = Users.query.filter_by(fb_id=me.data['id']).first()

    if (hasattr(usr, 'fb_id'))==False:
        # Find them in our database and log them in
    else:
        # Sign them up

    return redirect(url_for('home'))

¿Hay alguna manera de configurarlo para que el objeto me pueda usarse en toda la aplicación, lo que permite inicios de sesión automáticos, ya que podría hacer este paso al cargar la página sin que el usuario tenga que visitar la URL de inicio de sesión?

Por el momento, el usuario tiene que visitar /iniciar sesión para recuperar su información de Facebook. ¿Es posible hacer esto como puede hacerlo en PHP, donde puede ser una variable utilizada en todo el script? - Perdón por sonar redundante, no estoy seguro de cómo explicar esto claramente.

En PHP, un código de ejemplo sería como el siguiente, y se invocaría en cada carga de página, sin requerir que el usuario visite la URL de inicio de sesión para iniciar sesión con su Facebook.

<?php
if(!$this->getUser()){


    $facebook = new Facebook(array(
      'appId'  => '',
      'secret' => '',
    ));

    $this->fbuser = $facebook->getUser();

    if ($this->fbuser) {
# etc..
?>

preguntado el 01 de julio de 12 a las 02:07

1 Respuestas

No estoy muy familiarizado con Flask, pero me parece que, lógicamente, su controlador de acceso no autorizado podría primero intentar iniciar sesión en el usuario usando Facebook antes de rechazar su solicitud de carga de página.

Respondido 01 Jul 12, 02:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.