Zugriff auf Facebook Connect FBML Cookie über PyFacebook?
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
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'])