我在我的桌面应用程序(C#,使用 WebBrowser 控件)中使用 OAuth 登录 Asana 创建了一个 cookie。它存储在 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");
}
}