【问题标题】:How to delete a user's cookie using python on app engine?如何在应用引擎上使用 python 删除用户的 cookie?
【发布时间】:2011-10-15 02:29:22
【问题描述】:

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

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

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

我可以通过以下方式调用此函数:

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)

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

非常感谢任何帮助。提前致谢。

【问题讨论】:

    标签: python google-app-engine facebook-graph-api session-cookies facebook-javascript-sdk


    【解决方案1】:

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

    如果它是您首先设置的 cookie,您应该能够在响应标头中将 cookie 设置为很久以前过期。 wikipedia article

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

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

    【讨论】:

    • 谢谢,我试试这个!如何设置域和路径?
    • 只需在添加标题的第二部分添加它...(维基百科文章显示示例:“Domain=docs.foo.com; Path=/accounts;”)。
    • 对此感到抱歉...经过进一步挖掘,您的问题似乎与此问题重复:stackoverflow.com/questions/2764436/facebook-oauth-logout
    • 我最终采用了类似的解决方案——使用 Facebook 的 Javascript API。我无法设置 cookie……但我必须通过反复试验来了解这一点。感谢您的帮助
    猜你喜欢
    • 2014-08-10
    • 2014-02-17
    • 2015-04-08
    • 1970-01-01
    • 2011-02-08
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多