سؤال

هل من الممكن ، بعد تسجيل الدخول عبر زر Facebook Connect FBML ، لاسترداد واستخدام تفاصيل الجلسة عبر Pyfacebook؟ هل يمكنني استخدام Auth.getSession () بنفس الطريقة كما لو كنت أطلق تسجيل الدخول عبر Python؟

في الأساس ، أحاول العمل إذا كان من الممكن استبدال المراحل حتى Raw_input () في المثال أدناه:

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
هل كانت مفيدة؟

المحلول

باستخدام التحقق من مستخدم Facebook صفحة على المطور wiki لقد تتبعت أسفل pyfacebook GetSession, validate_signature و getLoggedInuser الأساليب إلى جانب الكود الموجود في Pyfacebook's Example.py لـ 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

حصلت على الاختبار السريع التالي لـ Zope3 العمل باستخدام زر 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

نصائح أخرى

لست متأكدًا مما إذا كان هذا يجيب على سؤالك ، ومن المسلم به ، قد أقودك ضلالًا لأنني جديد في هذا (فقط لفت الواجهة الخلفية الخاصة بي على Facebook باستخدام Pyfacebook منذ حوالي 30 دقيقة):

أولاً ، قمت بتثبيت Pyfacebook Middlewar

'facebook.djangofb.FacebookMiddleware'

بعد ذلك ، أقوم بإعداد طريقة عرض باستخدام زر Connect Facebook والإعدادات المناسبة لإعادة توجيه المكان الذي أحتاج إليه عند إكمال التفويض.

في عرض تسجيل الدخول إلى Facebook Connect الخاص بي ، أقوم المصادقة على Facebook مع ملفات تعريف الارتباط Facebook Connect عن طريق تمرير متغير الطلب إلى request.facebook.check_session (). إذا عاد صحيحًا ، يكون الكائن جاهزًا لاستخدامه لاسترداد البيانات.

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'])
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top