【发布时间】: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