0

DotNetOpenAuth を使用して、FB と Google でユーザーをログインさせています。

ユーザーがウェブサイトにアクセスしたときに、そのユーザーがすでに FB または Google にログインしていることを検出して、自動的にログインする方法はありますか?

ありがとうございました

4

1 に答える 1

2

はい、ユーザーが以前に Google または Facebook を使用しWeb サイトに明示的にログインしたことがある場合。プライバシー上の理由から、どちらのプロバイダーも、各ユーザーが少なくとも 1 回は Web サイトに明示的にサインインする (ログイン ページで [記憶する] をクリックする) ことなく、暗黙的にユーザーをログインさせることを許可しません。

ユーザーがそれを承認すると、それは可能になりますが、まだそれほど単純ではありません。このアプローチには、ページに非表示の iframe を作成することが含まれます (おそらく、ユーザー セッションが最初に作成されたときに、ユーザーが表示しているページ、または人気のあるランディング ページだけに iframe を追加します)。この iframe は、ユーザー操作のないログイン フローを開始するだけのサイト上の URL を指しています。Google の場合、これは、サーバーがOpenIdRelyingParty.CreateRequestGoogle OP 識別子を使用して呼び出しを行い、 を呼び出すIAuthenticationRequest.Mode = AuthenticationRequestMode.Immediate前に返されたオブジェクトを設定することを意味しますIAuthenticationRequest.RedirectToProvider。のImmediatebit は、(iframe が非表示であるため) ユーザーと対話することを期待せず、すぐに yes または no の応答を返すようにプロバイダーに指示します。次に、サイトへのリダイレクト (まだ非表示の iframe 内) で、ユーザーが Google にログインしている (またはログインしていない) ことを確認し、要求された識別子を取得してサイトにログインします。

OAuth 2 の古いドラフトを使用する Facebook の場合、プロセスは似ているかもしれませんが、OAuth 2 クラスを使用します。ただし、これは行ったことがないので、概要を説明することはできません。

于 2012-05-28T16:16:48.370 に答える