0

我正在使用Visual Studio 2015與更新3.我有一個Windows窗體項目與WebBrowser控件。谷歌oAuth不能從嵌入式瀏覽器工作

VisualStudio Version

程序能夠使用OAuth的谷歌資訊(AdWords,谷歌分析,谷歌驅動器)如預期週一(和前兩年)。今天我們得到一個「您的瀏覽器不再支持」的重定向,無法進行身份驗證。

Not Supported

的Internet Explorer本地版本11.494.10586.0 Internet Explorer Version

當我手動OAuth的網址複製到Internet Explorer(不EDGE)基於OAuth的認證過程中正常工作(但是C#程序可以顯然不解析結果)。 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是相反的。我不確定這是否與這個問題有關,但這是我注意到的差異

我創建了一個新的空白Forms項目,添加了一個WebBrowser(System.Windows.Forms.WebBrowser)。加載時,只有一行代碼webBrowser1.Navigate(oAuthURL);這再現了錯誤。

下面是我們使用,以供參考 (修改客戶端ID和重定向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的最新版本一致,但是這可能是巧合的OAuth的URL。網上似乎有很多關於類似問題的喋喋不休,這可能是相關的。

是否有其他人遇到過這種情況?

回答

1

我們在這裏的應用程序有同樣的問題。我們使用谷歌的OAuth2訪問Google Calendar API。像.NET的WebBrowserControl這樣的瀏覽器在所有已安裝的Internet Explorer版本上使用IE7模擬,並且我認爲Google不再支持該版本。

我在Stackoverflow Question 18333982中發現了一個很好的解決方法。使用從那裏的代碼,我能夠獲得OAuth2的訪問權限。

HTH

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」插件所需的,它的工作原理。

相關問題