DotNetOpenAuth を使用して、FB と Google でユーザーをログインさせています。
ユーザーがウェブサイトにアクセスしたときに、そのユーザーがすでに FB または Google にログインしていることを検出して、自動的にログインする方法はありますか?
ありがとうございました
DotNetOpenAuth を使用して、FB と Google でユーザーをログインさせています。
ユーザーがウェブサイトにアクセスしたときに、そのユーザーがすでに FB または Google にログインしていることを検出して、自動的にログインする方法はありますか?
ありがとうございました
はい、ユーザーが以前に Google または Facebook を使用してWeb サイトに明示的にログインしたことがある場合。プライバシー上の理由から、どちらのプロバイダーも、各ユーザーが少なくとも 1 回は Web サイトに明示的にサインインする (ログイン ページで [記憶する] をクリックする) ことなく、暗黙的にユーザーをログインさせることを許可しません。
ユーザーがそれを承認すると、それは可能になりますが、まだそれほど単純ではありません。このアプローチには、ページに非表示の iframe を作成することが含まれます (おそらく、ユーザー セッションが最初に作成されたときに、ユーザーが表示しているページ、または人気のあるランディング ページだけに iframe を追加します)。この iframe は、ユーザー操作のないログイン フローを開始するだけのサイト上の URL を指しています。Google の場合、これは、サーバーがOpenIdRelyingParty.CreateRequest
Google OP 識別子を使用して呼び出しを行い、 を呼び出すIAuthenticationRequest.Mode = AuthenticationRequestMode.Immediate
前に返されたオブジェクトを設定することを意味しますIAuthenticationRequest.RedirectToProvider
。のImmediate
bit は、(iframe が非表示であるため) ユーザーと対話することを期待せず、すぐに yes または no の応答を返すようにプロバイダーに指示します。次に、サイトへのリダイレクト (まだ非表示の iframe 内) で、ユーザーが Google にログインしている (またはログインしていない) ことを確認し、要求された識別子を取得してサイトにログインします。
OAuth 2 の古いドラフトを使用する Facebook の場合、プロセスは似ているかもしれませんが、OAuth 2 クラスを使用します。ただし、これは行ったことがないので、概要を説明することはできません。