私はデスクトップアプリケーションを作成していますが、一部でOAuth 2.0のフローを参照しています。外部Webブラウザのタブを閉じるには?
手順は次のとおりです。
- スタートプロセス - ログインページとWebブラウザを開きます。
- ユーザーがログインし、自分のアプリケーションを認証します。
- バックグラウンドでは、特定の名前のプロセスを検索し、アプリケーションに名前(名前)を保存します。
- 最後に私はウェブブラウザを閉じます。
ユーザーが以前にWebブラウザでいくつかのタブを開いていた場合、ポイント1で新しいタブが追加され、ポイント4にすべてのタブが追加されました。
ウェブブラウザで1つのタブを閉じる方法があるかどうか教えてください。 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の認証を実装するための最もエキゾチックな方法については、私は今まで見たことがありません –
トピックに関する詳細:このブラウザの代わりに、既存のC#OAuthライブラリの1つ、たとえばhttp://stackoverflow.com/questions/3997172/oauth-2-0 -service-provider-net-libraries –
ネイティブの「WebBrowser」コントロールを使用するだけで、アプリケーション内にそのサービスを保持することができます。 –