【问题标题】:Can't delete cookie with Win32 InternetSetCookie function无法使用 Win32 InternetSetCookie 函数删除 cookie
【发布时间】:2016-12-04 04:14:44
【问题描述】:

我在我的桌面应用程序(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");
    }
}    

【问题讨论】:

    标签: c# cookies asana-api


    【解决方案1】:

    只需使用 File.Delete 方法从您提供的特定目录中删除 cookie。

    【讨论】:

    • 显然这不是推荐的方法(参见stackoverflow.com/questions/12181451/…)。此外,我已经尝试过了,文件没有被删除,也没有引发错误。另一种选择是使用 DeleteUrlCacheEntry 方法,但我还没有弄清楚如何使用该方法。
    【解决方案2】:

    @Eric Legault,我是 Asana 的开发者倡导者。我环顾四周,想看看什么对你有用。

    首先,我们收到了一些关于此行为的请求;具体来说,我们有一个提议,要在这个重定向流程中添加一个功能,其中集成可以导致用户选择器出现,以便让集成使用机器人帐户登录到 Asana,例如,即使有一天今日的 Asana 帐户也已登录。这是您希望完成的事情吗? (最好知道这有助于我们确定事情的优先级)

    在任何情况下,我都可以为您提供一些建议来尝试完成这项工作,但由于这是一种非常老套的注销方式(尽管我们承认一开始没有让这件事变得简单是我们的错),我会如果您向 devrel@asana.com 发送电子邮件而不是在公共渠道中发帖,则更愿意。对我们来说,这里的风险是我们可能会发布有关管理注销的非官方支持方式的信息,如果我们更改我们的 cookie 架构,可能会导致依赖于 hack 的集成中断,这对我们所有人来说都是可悲的。如果您有兴趣,请随时直接与我们联系!

    【讨论】:

    • 谢谢马特,我会直接与您联系。我还有其他相关问题,我只是要发布关于
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 2020-06-11
    • 1970-01-01
    相关资源
    最近更新 更多