我正在編寫桌面應用程序,並且在一部分中我將介紹OAuth 2.0流程。如何在外部網頁瀏覽器中關閉標籤頁?
的步驟是:
- 啓動過程 - 打開網頁瀏覽器登錄頁面。
- 用戶登錄並授權我的應用程序。
- 在後臺我搜索具有特定名稱的進程,將其保存(名稱)在應用程序中。
- 最後,我關閉了Web瀏覽器。
問題是,如果用戶以前在網絡瀏覽器中打開過一些標籤 - 在第1點中,新標籤被添加並且在第4點中,所有內容都被關閉(帶有所有標籤的網絡瀏覽器)。
你能告訴我是否有方法可以關閉瀏覽器中的單個標籤頁嗎? 或者也許有其他/更簡單的方法來通過OAuth?
作爲手動解決方案,我將簡單地向用戶顯示信息「現在您可以關閉此選項卡」,但是我想自動執行此操作。
這是C#.Net 4.0 WPF項目。
string strAuthUrl = "http://accounts.example.com/login",
strAuthCode = string.Empty;
// Request authorization from the user (by opening a browser window):
ProcessStartInfo startInfo = new ProcessStartInfo(strAuthUrl);
startInfo.CreateNoWindow = false;
//1.
Process.Start(startInfo);
//2. - is happening in web browser
//3.
do
{
foreach (Process proc in Process.GetProcesses())
{
if (proc.MainWindowTitle.StartsWith("Success code="))
{
strAuthCode = proc.MainWindowTitle.ToString().Substring(13, 30);
//4.
try
{
// Close process by sending a close message to its main window.
proc.CloseMainWindow();
// Free resources associated with process.
proc.Close();
// Wait 500 milisecs for exit
proc.WaitForExit(500);
//if proc has not exited so far - kill it
if (proc.HasExited == false)
{
proc.Kill();
proc.WaitForExit();
}
}
catch (Exception ex)
{
//Do something with exception
}
break;
}
}
}
while (string.IsNullOrEmpty(strAuthCode));
感謝您的建議。
+1實現驗證我的最奇特的方式有史以來 – 2012-03-14 13:54:25
更多關於主題:你可能會考慮使用現有的C#OAuth庫之一,而不是這個瀏覽器的東西 - 例如,從http://stackoverflow.com/questions/3997172/oauth-2-0的答案之一-service-provider-net-libraries – 2012-03-14 13:56:55
您可以通過使用本地'WebBrowser'控件將它保留在您的應用程序中。 – 2012-03-14 13:56:56