7

我在谷歌应用程序引擎(webapp)上使用python facebook api。我想将用户的Cookie设置为在用户注销应用程序时过期。这个cookie由Javascript Facebook API设置。如何使用应用程序引擎上的python删除用户的cookie?

这里是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 

我能这样做来调用这个函数:

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过期?

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

回答

5

更新:如果您是设置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") 

确保域和路径设置为原来一样的饼干或它可能会无法正常工作。

+0

谢谢,我会试试这个!我如何设置域和路径? – Cuga

+0

只需在添加标题的第二部分添加它即可......(维基百科文章显示示例:“Domain = docs.foo.com; Path =/accounts;”)。 – Aaron

+0

我无法得到它的工作...感谢您的帮助,虽然 – Cuga

相关问题