Frage

Ist es möglich, nachdem sie über einen Facebook Connect FBML Taste angemeldet, abzurufen und die Sitzungsdetails über PyFacebook ? Kann ich auth.getSession () in der gleichen Art und Weise, als ob ich die Login über Python gefeuert würde?

Im Grunde versuche ich zu arbeiten, wenn es möglich ist, die Stufen zu ersetzen, bis einschließlich raw_input () in dem folgende Beispiel:

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
War es hilfreich?

Lösung

der Benutzer Seite Facebook Überprüfen auf dem Entwickler Wiki I verfolgt auf der PyFacebook getSession validate_signature und getLoggedInUser Methoden und zusammen mit dem in PyFacebook der example.py für Django gefunden Code:

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

Haben Sie die folgende Schnelltest für Zope3 mit der FBML-Taste funktioniert:

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

Andere Tipps

Ich bin mir nicht sicher, ob dies Ihre Frage beantwortet und, zugegebenermaßen, könnte ich dich in die Irre führen werden, weil ich bei dieser neuen bin (verdrehte nur meine eigene Facebook-Authentifizierungs-Backend vor etwa 30 Minuten mit pyfacebook):

Zuerst installierte ich die pyfacebook Middleware (lassen Sie mich request.facebook in jeder Ansicht nennen):

'facebook.djangofb.FacebookMiddleware'

Dann habe ich Setup eine Ansicht mit einem facebook connect-Taste und die entsprechenden Einstellungen für sie zu umleiten, wo ich es auf Genehmigung Abschluss benötigen.

In meiner Facebook-Login erfolgt Ansicht verbinden, authentifizieren ich auf facebook mit der Facebook-Cookies verbinden, indem die Anfrage Variable vorbei an request.facebook.check_session (). Wenn es True zurückgibt, ist das Objekt bereit, verwendet werden, um Daten abzurufen.

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'])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top