【问题标题】:Facebook logout using OAuth server side使用 OAuth 服务器端的 Facebook 注销
【发布时间】:2012-09-06 23:22:39
【问题描述】:

我刚刚阅读了手册,但没有说明如何注销用户。我的问题与此类似:

Facebook JS SDK FB.logout() doesn't terminate user session

但我使用的是服务器端流程。我想我需要知道哪些 cookie 的名称会失效,因为删除 cookie 会导致用户退出,不是吗?

这是我的注销,我假设我知道可能已更改的 cookie 的名称:

class FBLogoutHandler(webapp2.RequestHandler):

    csrf_protect = False

    def get(self):
        logging.debug('in fblogout')
        current_user = main.get_user_from_cookie(self.request.cookies,
                facebookconf.FACEBOOK_APP_ID,
                facebookconf.FACEBOOK_APP_SECRET)
        if current_user:
            graph = main.GraphAPI(current_user['access_token'])
            profile = graph.get_object('me')
            accessed_token = current_user['access_token']
        logging.debug('setting cookie')
        self.set_cookie('fbsr_' + facebookconf.FACEBOOK_APP_ID, None,
                        expires=time.time() - 86400)

        self.redirect('https://www.facebook.com/logout.php?next=http://www.koolbusiness.com/fbredirect&access_token=%s'
                       % accessed_token)

    def set_cookie(
        self,
        name,
        value,
        expires=None,
        ):
        if value is None:
            value = 'deleted'
            expires = datetime.timedelta(minutes=-50000)
        jar = Cookie.SimpleCookie()
        jar[name] = value
        jar[name]['path'] = '/'
        if expires:
            if isinstance(expires, datetime.timedelta):
                expires = datetime.datetime.now() + expires
            if isinstance(expires, datetime.datetime):
                expires = expires.strftime('%a, %d %b %Y %H:%M:%S')
            jar[name]['expires'] = expires
        self.response.headers.add_header(*jar.output().split(': ', 1))

【问题讨论】:

    标签: python facebook google-app-engine facebook-graph-api


    【解决方案1】:

    不使用 JS SDK 的方法,因此可能更适合任何进行服务器端 FB 身份验证的人,我在这里找到:https://stackoverflow.com/a/9799430/117989

    来自http://developers.facebook.com/docs/authentication/

    让用户退出 Facebook

    您可以通过将用户重定向到以编程方式将用户从 Facebook 注销

    https://www.facebook.com/logout.php?
        next=YOUR_REDIRECT_URL
        &access_token=USER_ACCESS_TOKEN
    

    next 参数中提供的 URL 必须是与应用程序设置中定义的应用程序具有相同基域的 URL。

    【讨论】:

      【解决方案2】:

      您不能将用户从 FB 中注销 - 这需要您访问 FB cookie,而您没有。

      您只能将用户从您自己的应用中注销。

      【讨论】:

      猜你喜欢
      • 2013-04-16
      • 2013-06-01
      • 2011-02-15
      • 2012-08-13
      • 1970-01-01
      • 2011-12-03
      • 2020-12-29
      • 2020-06-04
      • 2012-04-18
      相关资源
      最近更新 更多