0

Я использую Visual Studio 2015 с обновлением 3. У меня есть проект Windows Forms с элементом управления WebBrowser.Google oAuth не работает из встроенного браузера

VisualStudio Version

Программа смогла OAuth с Google (AdWords, Google Analytics, Google Drive), как ожидается, в понедельник (и за годы, предшествующие). Сегодня мы получаем «Ваш браузер больше не поддерживается» перенаправлять и не могут аутентифицироваться.

Not Supported

Локальная версия Internet Explorer является 11.494.10586.0 Internet Explorer Version

Когда я вручную скопировать OAuth URL в Internet Explorer (не край) процесс OAuth работает отлично (однако с # программа может очевидно, не анализируют результаты). URL-адрес oAuth также отлично работает в Edge, Chrome и Firefox.

В коде результат WebBrowserControl1.Version выглядит следующим образом:

{11.0.10586.494} 
    Build: 10586 
    Major: 11 
    MajorRevision: 0 
    Minor: 0 
    MinorRevision: 494 
    Revision: 494 
    _Build: 10586 
    _Major: 11 
    _Minor: 0 
    _Revision: 494 

Обратите внимание, как 494 и 0 перепутаны в Visual Studio и Internet Explorer. Я не уверен, связано ли это с проблемой или нет, но это несоответствие, которое я заметил.

Я создал новый пустой проект форм, добавлен WebBrowser (System.Windows.Forms.WebBrowser). При загрузке есть только одна строка кода webBrowser1.Navigate (oAuthURL); Это воспроизвело ошибку.

Вот URL OAuth, который мы используем, для справки (модифицированный идентификатор клиента и перенаправлять URI)

https://accounts.google.com/o/oauth2/auth?client_id=123456.apps.googleusercontent.com&redirect_uri=https://www.google.com&access_type=offline&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fanalytics+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fanalytics.edit+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fspreadsheets.google.com%2Ffeeds+https%3A%2F%2Fdocs.google.com%2Ffeeds+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.file+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&response_type=code&approval_prompt=force 

Это совпадает с последней сборки Windows, однако это может быть совпадением. Кажется, в Интернете много разговоров о похожих проблемах, которые могут быть связаны.

Неужели кто-нибудь еще испытывает это?

ответ

1

У нас такая же проблема с нашим приложением здесь. Мы используем OAuth2 из google для доступа к API календаря Google. Похоже, что WebBrowserControl .NET использует эмуляцию IE7 для всех установленных версий Internet Explorer, и я предполагаю, что Google больше не поддерживает эту версию.

Я нашел хорошее обходное решение для этого в Stackoverflow Question 18333982. Используя код оттуда, я смог получить доступ к OAuth2.

НТН

0

Ваша реальная проблема не то, что ваш браузер устарел, но его называют в режиме эмуляции IE7. Как только вы измените режим эмуляции на более чем 7, например 8 (или даже 11, если вы знаете, что у пользователя есть браузер) OAuth2 начинает работать снова.Вот документ, который описывает, как вы можете установить режим эмуляции:

MSDN

В принципе, то, что вам нужно сделать, это добавить значение DWORD к ключу, как:

HKCU\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION 

MyExeName.exe : DWORD = 8000 (Decimal) 
0

Это работал для меня после решения от Tuncay, но единственное изменение заключается в том, что значение не равно 0x00008000 (hexa), но 8000 (десятичное), чтобы указать IE 8.0.

Итак, следуйте указаниям своей ссылки MSDN, чтобы узнать, какое значение ввести для каждой версии IE.

Я ввел oauthbrowser64.exe = 9999, который с сегодняшнего дня необходим для плагина Total Commander «Cloud», и он работает.