Как удалить cookie пользователя с помощью python на движке приложения? - PullRequest
7 голосов
/ 28 июля 2011

Я использую API-интерфейс Python Facebook на Google App Engine (веб-приложение). Я хочу, чтобы срок действия файла cookie пользователя истек, когда пользователь выходит из приложения. Этот файл cookie устанавливается API Javascript Facebook.

Вот функция API Facebook, показывающая, как API Facebook получает доступ к cookie-файлу Facebook:

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 пользователя?

Любая помощь очень ценится. Заранее спасибо.

1 Ответ

5 голосов
/ 28 июля 2011

Обновление: этот метод будет работать, если вы тот, кто установил cookie ... но я упустил из виду ту часть, где вы четко сказали, что это cookie facebook, который вы хотите удалить. В этом случае ответ на этот вопрос будет именно тем, что вам нужно: Facebook Oauth Logout

Если это файл cookie, который вы устанавливаете в первую очередь, вы можете просто установить срок действия cookie в заголовке своего ответа очень давно. статья в Википедии

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

Убедитесь, что домен и путь совпадают с исходным файлом cookie, иначе он не будет работать.

...