【问题标题】:Accessing Facebook Connect FBML cookie via PyFacebook?通过 PyFacebook 访问 Facebook Connect FBML cookie?
【发布时间】:2009-11-22 06:20:14
【问题描述】:

通过 Facebook Connect FBML 按钮登录后,是否可以通过 PyFacebook 检索和使用会话详细信息?我可以像通过 Python 触发登录一样使用 auth.getSession() 吗?

基本上,我正在尝试确定是否可以在下面的示例中替换包含 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

【问题讨论】:

  • 没有关于问题或答案的具体 Django 或 Zope,所以我为你删除了这些标签。

标签: python facebook cookies


【解决方案1】:

使用开发者 wiki 上的 Verifying the Facebook User 页面,我跟踪了 PyFacebook getSessionvalidate_signaturegetLoggedInUser 方法以及代码在 PyFacebook 的 Django 的 example.py 中找到:

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

使用 FBML 按钮对 Zope3 进行以下快速测试:

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

【讨论】:

    【解决方案2】:

    我不确定这是否能回答您的问题,诚然,我可能会误入歧途,因为我是这方面的新手(大约 30 分钟前刚刚使用 pyfacebook 推出了我自己的 facebook auth 后端):

    首先,我安装了 pyfacebook 中间件(让我可以在任何视图中调用 request.facebook):

    'facebook.djangofb.FacebookMiddleware'
    

    然后,我使用 facebook 连接按钮和适当的设置设置一个视图,以便在授权完成后将其重定向到我需要的位置。

    在我的 facebook 连接登录完成视图中,我通过将请求变量传递给 request.facebook.check_session() 来使用 facebook 连接 cookie 对 facebook 进行身份验证。如果它返回 True,则该对象已准备好用于检索数据。

    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'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 2012-02-03
      相关资源
      最近更新 更多