我在桌面应用程序中使用OAuth登录Asana创建了一个cookie(C#,使用WebBrowser控件)。它存储在C:\ Users \ elega \ AppData \ Local \ Microsoft \ Windows \ INetCache中,名为“cookie:elega@app.asana.com /".
我想删除它,以便当我导航到OAuth页面时,Asana的API不会自动为我提供新的令牌。当手动删除该cookie时,它会强制用户再次登录 - 这就是我想要的。
根据我的研究,您似乎无法直接使用代码删除Cookie,但您可以将其过期。所以我正在使用InternetSetCookie函数,但它似乎没有修改cookie文件(根据文件中最后修改的数据标记判断,以及OAuth仍然给我标记的事实)。我没有看到关于cookie名称可能有什么广泛的解释,但我已经尝试了下面的所有变化,没有任何工作。我做错了什么?
class DeleteCookie
{
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
private void Delete()
{
bool returnVal;
returnVal = InternetSetCookie("https://app.asana.com", "cookie:elega@app.asana.com/", "expires = Sat,01-Jan-1970 00:00:00 GMT");
returnVal = InternetSetCookie("https://app.asana.com", "elega@app.asana.com/", "expires = Sat,01-Jan-1970 00:00:00 GMT");
returnVal = InternetSetCookie("https://app.asana.com", "cookie:elega@app.asana.com", "expires = Sat,01-Jan-1970 00:00:00 GMT");
returnVal = InternetSetCookie("https://app.asana.com", "elega@app.asana.com", "expires = Sat,01-Jan-1970 00:00:00 GMT");
returnVal = InternetSetCookie("https://app.asana.com", null, "expires = Sat,01-Jan-1970 00:00:00 GMT");
}
}
答案 0 :(得分:0)
只需使用File.Delete方法从您提供的特定目录中删除cookie。
答案 1 :(得分:0)
首先,我们就此行为提出了一些要求;具体来说,我们已经建议在此重定向流程中添加一项功能,其中集成可以导致用户选择器出现,以便让集成使用机器人帐户登录Asana,即使有一天今天的Asana帐户也登录了。这是你希望完成的事情吗? (知道帮助我们确定事情的优先事项会很好)
在任何情况下,我都可以给你一些指导,试图让这个工作,但因为这是一个非常hacky退出的方式(虽然我们的错,因为我们首先没有让这很容易),我会如果您发送电子邮件至devrel@asana.com而不是在公共频道发布,则更喜欢。我们面临的风险是,我们可能会发布有关非官方支持的管理注销方式的信息,如果我们更改我们的Cookie架构,可能会导致依赖于黑客攻击的集成中断,这对我们所有人来说都很难过。如果您有兴趣,请随时直接与我们联系!