デスクトップアプリケーション(WebBrowserコントロールを使用してC#)でOAuthを使用してAsanaにログインして作成したクッキーがあります。これはC:\ Users \ elega \ AppData \ Local \ Microsoft \ Windows \ INetCacheに格納され、 "cookie:[email protected]/"という名前です。Win32 InternetSetCookie関数でクッキーを削除できません
OAuthページに移動すると、AsanaのAPIが自動的に新しいトークンを私に渡さないように削除します。そのクッキーを手動で削除すると、ユーザーは再度ログインする必要があります。これが私が望むものです。
私の研究から、コードで直接クッキーを削除することはできないと思われますが、期限切れになる可能性があります。だから私はInternetSetCookie関数を使用していますが、ファイル内の最後に変更されたデータスタンプと、OAuthがまだ私にトークンを与えていると判断して、クッキーファイルを変更しているようには見えません。私はクッキー名が何であるかについて広範な説明を見ていないが、私は以下のすべてのバリエーションを試してみたが、何も動作していない。私は間違って何をしていますか?
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:[email protected]/", "expires = Sat,01-Jan-1970 00:00:00 GMT");
returnVal = InternetSetCookie("https://app.asana.com", "[email protected]/", "expires = Sat,01-Jan-1970 00:00:00 GMT");
returnVal = InternetSetCookie("https://app.asana.com", "cookie:[email protected]", "expires = Sat,01-Jan-1970 00:00:00 GMT");
returnVal = InternetSetCookie("https://app.asana.com", "[email protected]", "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");
}
}
これは推奨される方法ではありません(http://stackoverflow.com/questions/12181451/winforms-webbrowser-how-to-delete-cookiesを参照)。また、私はそれを試みて、ファイルが削除されず、エラーは発生しません。別のオプションは、DeleteUrlCacheEntryメソッドを使用することですが、私はまだそのアプローチを使用する方法を理解していません。 –