Почему webbrowser теряет ссылку после #?

Написал программу на wpf которая авторизуется в vk через webbrowser.

В windows 7 после редиректа теряется часть с access token которая идет после #.
например должно быть https://oauth.vk.com/blank.html#access_token=84ece...
а получается https://oauth.vk.com/blank.html

В windows 10 все работает прекрасно (часть после # не теряется).

В чем может быть проблема?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
tomnolane
@tomnolane
профессиональный разработчик
вот мой код который работает (п.с. ВК ругается на низкие IE версии, и в своё время моё приложение работало на моём компе, но когда поставил на комп сестры (у нас ВИН7, но у меня ИЕ обновлённый (11), у неё нет (8), у неё ВК отказывался запускать - мол старый бразуер... по-этому я использую awesomium вместо стандартного браузера):
public Form1()
        {
            InitializeComponent();
             
            webbrowser.BringToFront(); 
            webbrowser.Visible = true;
            string url = "https://oauth.vk.com/authorize?client_id=" + VK_main.ID_APP + "&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=" + VK_main.SCOPE + "&response_type=token&v=" + VK_main.VERSION; 
            webbrowser.LoadingFrameComplete += Webbrowser_LoadingFrameComplete; //жду окончания загрузки
            webbrowser.Source = new Uri(url);
        }

        private void Webbrowser_LoadingFrameComplete(object sender, FrameEventArgs e)
        {
            if (!e.IsMainFrame) return;

            if(e.Url.ToString().Contains("https://oauth.vk.com/blank.html#access_token="))
            { 
                int start = e.Url.Fragment.IndexOf("=");
                int end = e.Url.Fragment.IndexOf("&");
                VK_main.TOKEN = e.Url.Fragment.Substring(start+1, end-start-1); // записываю в "глобальную переменную токен
                webbrowser.LoadingFrameComplete -= Webbrowser_LoadingFrameComplete;
                webbrowser.Visible = false;
            }
        }


п.с. проблема может быть в версии IE (по умолчанию webbrowser - использует ядро IE)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы