Question

Après avoir ouvert une session via un bouton Facebook Connect FBML, est-il possible de récupérer et d’utiliser les détails de la session via PyFacebook ? Puis-je utiliser auth.getSession () de la même manière que si j'avais déclenché la connexion via Python?

En gros, j'essaie de déterminer s'il est possible de remplacer les étapes jusqu'à et incluant raw_input () dans l'exemple ci-dessous:

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
Était-ce utile?

La solution

Utilisation de la page Vérification de l'utilisateur Facebook sur le wiki du développeur que j'ai suivi dans les méthodes getSession , validate_signature et getLoggedInUser de PyFacebook et avec le code trouvé dans le fichier example.py de PyFacebook pour 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

Vous avez obtenu le test rapide suivant pour Zope3 en utilisant le bouton 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

Autres conseils

Je ne suis pas sûr que cela réponde à votre question et, certes, je risque de vous égarer parce que je suis novice en la matière (j'ai lancé mon propre système d’authentification facebook en utilisant pyfacebook il ya environ 30 minutes):

Tout d'abord, j'ai installé le middleware pyfacebook (me permettant d'appeler request.facebook dans n'importe quelle vue):

'facebook.djangofb.FacebookMiddleware'

Ensuite, j'ai configuré une vue avec un bouton de connexion à Facebook et les paramètres appropriés pour qu'elle soit redirigée là où j'en ai besoin une fois l'autorisation terminée.

Dans ma vue de connexion effectuée avec Facebook Connect, je m'authentifie auprès de Facebook avec les cookies de connexion Facebook en transmettant la variable de requête à request.facebook.check_session (). S'il renvoie True, l'objet est prêt à être utilisé pour récupérer des données.

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'])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top