locked
LOGUOT из ВКонтакте, Чистка Cookies в Webbrowser RRS feed

  • Вопрос

  • Здравствуйте, пишу извечный вопрос. Очень подробно описан метод авторизации StandAlone приложений по протоколу OAuth 2.0
    oauth. vk. com /authorize? client_id =3312454&..
    , но ни слова о том, как разлогиниться, чтобы потом зайти под другим логином.
    Очевидно, что он не предусмотрен.

    Что интересно, сами разработчики Вконтакте рекомендуют именно этот способ, испоьзуя элемент Browser (пусть даже в ipnone или android) нужно залогиниться и получить token. Но сами, в приложении Vkontakte, размещенный на MarketPlace, используют старый спосбо авторизации Open API, кторый сами же не рекомендуют. И все клиенты в Marketplace используют именно этот старый, небезопасный для пользователя способ.

    Холошо, я могу залогиниться следуя этим принципам. У меня есть WebBrowser, я пишу

    WB.Navigate(new Uri("ht t ps :// oauth. vk. com/ authorize? client_id= 3312454& scope=12288 &redirect_uri=http://oauth.vk.com/blank.html&display=popup&response_type=token"));

    в методе Navigated получаю строку URL с token

    Всем, кому я писал, кто разрабатывал клиенты, пишут что надо чистить куки. Хорошо, но как?

    Нашел пример для Facebook, автор говорит, что работает: Вот его код:

    private HttpWebRequest _webRequest;
    private CookieContainer _cookieContainer = new CookieContainer();
    ...
    this._webRequest = (HttpWebRequest)HttpWebRequest.Create(uri);
    this._webRequest.CookieContainer = this._cookieContainer;

    ...

    public void ClearCookies(Uri uri)
    {
    var cookies = this._cookieContainer.GetCookies(uri);
    foreach (Cookie cookie in cookies)
    {
     cookie.Discard = true;
     cookie.Expired = true;
    }
    }

    ...

    private static readonly Uri FacebookCookieUri = new Uri("ht tps :// login. facebook. com/login.php");
    ...
    this._helper.ClearCookies(FacebookCookieUri);

    Вполне очевидно, что в коде получаем куки из HttpWebRequest, тоже самое я получаю куки из Webbrowser и они есть 2 кука, я могу их порчитать и вывести, но стереть их не могу!!!!!

    Вот мой пример:

    var cooc = WB.GetCookies();

    MessageBox.Show(cooc.Count.ToString());

    //типа удаляю

    foreach (Cookie cookie in cooc)
    {
               cookie.Discard = true;
               cookie.Expired = true;
    //           cookie.Expires = DateTime.MinValue;
    //           DateTime.Now.AddDays(-1);
    }

    Помогите, из-за этой ерунды остановил свой проект!

    Спасибо!

     

    23 февраля 2013 г. 7:17

Ответы

  • Убил на эти куки в свое время 2 дня, почистить их так и не получилось, несмотря на наличие примеров. Отключал куки в настройках браузера на телефоне - тогда авторизация не работает, выдает пустую страницу. На самом деле это не так критично как кажется...Обычный сценарий : 1 телефон - 1 пользователь, 1 бесконечный токен доступа. 

    Но если у Вас получится или кто-то подскажет решение, буду рад узнать его)

    • Помечено в качестве ответа Abolmasov Dmitry 28 февраля 2013 г. 7:18
    25 февраля 2013 г. 7:18
  • Привет

    Скорей всего GetCookies возвращает копию данных и их изменение ни к чему не приводит. Попробуйте перенаправить WebBrowser на сайт vk, а после выполнить очистку с помощью javascript, по аналогии с C#, Webbrowser control: How to delete Cookies from windows.form?

    Вместо Navigate, если не получится можно воспользоваться методом Invoke Script и передать ему туже строку, только без javascript:

    Также можно попробовать установить заведомо неправильные куки методом, приведенном в теме Windows Phone WebBrowser set cookies


    Для связи [mail]

    • Помечено в качестве ответа Abolmasov Dmitry 28 февраля 2013 г. 7:18
    25 февраля 2013 г. 12:48

Все ответы

  • Убил на эти куки в свое время 2 дня, почистить их так и не получилось, несмотря на наличие примеров. Отключал куки в настройках браузера на телефоне - тогда авторизация не работает, выдает пустую страницу. На самом деле это не так критично как кажется...Обычный сценарий : 1 телефон - 1 пользователь, 1 бесконечный токен доступа. 

    Но если у Вас получится или кто-то подскажет решение, буду рад узнать его)

    • Помечено в качестве ответа Abolmasov Dmitry 28 февраля 2013 г. 7:18
    25 февраля 2013 г. 7:18
  • Привет

    Скорей всего GetCookies возвращает копию данных и их изменение ни к чему не приводит. Попробуйте перенаправить WebBrowser на сайт vk, а после выполнить очистку с помощью javascript, по аналогии с C#, Webbrowser control: How to delete Cookies from windows.form?

    Вместо Navigate, если не получится можно воспользоваться методом Invoke Script и передать ему туже строку, только без javascript:

    Также можно попробовать установить заведомо неправильные куки методом, приведенном в теме Windows Phone WebBrowser set cookies


    Для связи [mail]

    • Помечено в качестве ответа Abolmasov Dmitry 28 февраля 2013 г. 7:18
    25 февраля 2013 г. 12:48