如何在app引擎上使用python删除用户的cookie?

Cug*_*uga 7 python google-app-engine session-cookies facebook-graph-api facebook-javascript-sdk

我在谷歌应用引擎(webapp)上使用python facebook api.我想将用户的cookie设置为在用户退出应用程序时过期.此cookie由Javascript Facebook API设置.

这是facebook api函数显示facebook api如何访问facebook cookie:

def get_user_from_cookie(cookies, app_id, app_secret):
    cookie = cookies.get("fbs_" + app_id, "")
    if not cookie: return None
    args = dict((k, v[-1]) for k, v in cgi.parse_qs(cookie.strip('"')).items())
    payload = "".join(k + "=" + args[k] for k in sorted(args.keys())
                      if k != "sig")
    sig = hashlib.md5(payload + app_secret).hexdigest()
    expires = int(args["expires"])
    if sig == args.get("sig") and (expires == 0 or time.time() < expires):
        return args
    else:
        return None
Run Code Online (Sandbox Code Playgroud)

我可以通过执行以下操作来调用此函数:

class WelcomePage(webapp.RequestHandler):
    def getFacebookCookie(self):
        cookie = facebook.get_user_from_cookie(
                              self.request.cookies, app_id, app_secret)
        accss_token = cookie["access_token"]
        logging.debug("The access token is %s"%access_token)
Run Code Online (Sandbox Code Playgroud)

现在我如何删除/设置用户的cookie到期?

任何帮助深表感谢.提前致谢.

Aar*_*ron 5

更新:如果您是设置cookie的人,此方法将起作用...但我忽略了您明确表示要删除的Facebook的cookie的部分.在这种情况下,这个问题的答案似乎正是您所需要的:Facebook Oauth Logout

如果它是您首先设置的cookie,您应该能够将cookie设置为很久以前在响应标头中过期.维基百科文章

self.response.headers.add_header("Set-Cookie", "access_token=deleted; Expires=Thu, 01-Jan-1970 00:00:00 GMT")
Run Code Online (Sandbox Code Playgroud)

确保将域和路径设置为与原始cookie相同,否则它可能无法正常工作.