0

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

2 回答 2

0

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

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

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

于 2016-12-09T23:36:13.660 回答
0

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

于 2016-12-04T04:29:20.973 回答