0

Ich verwende Visual Studio 2015 mit Update 3. Ich habe ein Windows Forms-Projekt mit einem WebBrowser-Steuerelement.Google oAuth funktioniert nicht von einem eingebetteten Browser aus

VisualStudio Version

Das Programm konnte oAuth mit Google (AdWords, Google Analytics, Google Drive) wie erwartet Montag (und für die Jahre vor). Heute erhalten wir eine Weiterleitung "Ihr Browser wird nicht mehr unterstützt" und können sich nicht authentifizieren.

Not Supported

Die lokale Version von Internet Explorer ist 11.494.10586.0 Internet Explorer Version

Wenn ich die oAuth URL zum Internet Explorer manuell kopieren (nicht an der Kante) der oAuth Prozess funktioniert gut (aber das C# Programm kann offensichtlich nicht die Ergebnisse analysieren). Die oAuth-URL funktioniert auch in Edge, Chrome und Firefox.

Im Code ist das Ergebnis WebBrowserControl1.Version wie folgt:

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

Beachten Sie, wie die 494 und 0 in Visual Studio und Internet Explorer umgekehrt. Ich bin mir nicht sicher, ob dies mit dem Problem zusammenhängt oder nicht, aber es ist eine Diskrepanz, die ich bemerkte

Ich erstellte ein neues leeres Forms-Projekt, fügte einen WebBrowser (System.Windows.Forms.WebBrowser) hinzu. Beim Laden gibt es nur eine Codezeile webBrowser1.Navigate (oAuthURL); Dies reproduziert den Fehler.

Hier ist die oAuth URL, die wir verwenden, als Referenz (modifizierte Client-ID und umleiten 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 

Das mit dem neuesten Build von Windows übereinstimmt, aber der Zufall sein könnte. Es scheint eine Menge Online-Chatter über ähnliche Themen zu geben, die verwandt sein könnten.

Ist dies jemand anderes?

Antwort

1

Wir haben das gleiche Problem mit unserer Anwendung hier. Wir verwenden OAuth2 von Google, um Zugriff auf die Google Kalender-API zu erhalten.Sieht aus, als ob das WebBrowserControl von .NET die IE7-Emulation in allen installierten Internet Explorer-Versionen verwendet, und ich nehme an, dass Google diese Version nicht mehr unterstützt.

Ich fand eine gute Abhilfe für diese in Stackoverflow Question 18333982. Mit dem Code von dort konnte ich auf OAuth2 zugreifen.

HTH

0

Ihr Problem ist nicht, dass Ihr Browser veraltet ist, aber dass es in IE7 Emulationsmodus genannt. Sobald Sie den Emulationsmodus auf etwas höher als 7, zum Beispiel 8 (oder sogar 11, wenn Sie wissen, dass der Benutzer den Browser hat) ändern, beginnt OAuth2 wieder zu arbeiten.Hier ist das Dokument, das beschreibt, wie Sie den Emulationsmodus einstellen:

MSDN

Im Grunde, was müssen Sie tun, ist eine DWORD Wert auf einen Schlüssel zu verwenden, wie:

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

MyExeName.exe : DWORD = 8000 (Decimal) 
0

Es arbeitete für mich nach der Lösung von Tuncay, aber die einzige Änderung ist, dass der Wert nicht 0x00008000 (Hexa) ist, sondern 8000 (dezimal), IE 8.0 anzuzeigen.

Folgen Sie daher der Angabe seines MSDN-Links, um zu erfahren, welcher Wert für jede IE-Version eingegeben werden muss.

Ich habe oauthbrowser64.exe = 9999, die seit heute für das Total Commander "Cloud" -Plugin erforderlich ist, und es funktioniert.

Verwandte Themen