Facebookを使用してアプリケーションにログインすると、アプリケーションはFacebookにユーザーの認証を要求します。認証が成功すると、Facebookはアプリケーションに認証されたことを通知します。その後、アプリケーションは独自のセッションを維持します。
Facebookアカウントまたはアプリケーションで行うことは、相互の変更を反映していない可能性があります。たとえば、Facebookアカウントからログアウトする場合、アプリケーションに関する限り、認証されているため、アプリケーションは認識しません。同時に、Facebookからログアウトしたとき、Facebookはアプリケーションに既にログアウトしていることを通知しませんでした。
アプリケーションとFacebook(または他のOAuthプロバイダー)は、独自の個別のセッションを維持します。
あなたの質問のために:
はい、Webサイトは訪問者をFacebookのリンクにリダイレクトします。このリンクは、クライアントにログインしていることを自動的に通知します。Facebookアカウントを使用してアプリケーションに最初にアクセスしようとしたときにアプリケーションのアクセス許可を既に付与しているため、プロンプトは表示されなくなります。
これは、個別のセッションのために機能します。Facebookからログアウトしても、アプリケーションにはまだログオンしています。アプリケーションがFacebookを介して本人確認を再度試みない限り、そうではありません。その場合、認証は失敗します。
これは正しいですが、Facebookなしでアプリケーションを認証する別の方法(リンクされたアカウントを使用した代替ログインなど)がない限り、Facebookにログインせずにアプリケーションにログインすることはできません。ただし、その場合でも、ログインするにはログインフォームを使用してFacebookにログオンする必要があります。アプリケーションからFacebookにログインすることはできません。
それは正しいです。Facebookからログアウトすると、Facebookからログアウトされます。個別のセッションのため、アプリケーションからもログアウトする必要があります。
また正しい。
あなたのケースでおそらく起こっていることは次のとおりです。
- アプリケーションからログアウトしました
- ホームページにリダイレクトされます
- あなたがログインしていないため、あなたのホームページはあなたを認証しようとします
- Facebookにリダイレクトされます
- Facebookはあなたの身元を確認し、アプリケーションにリダイレクトします
- アプリケーションが再度認証します
これを解決するために、ホームページは自動認証されるべきではありません。Facebookで認証を開始する前に、ユーザーがクリックする必要のあるボタン(「Facebookでログイン」など)が必要です。
Facebookからユーザーを「強制的にログアウト」することもできません。したがって、アプリケーションを使用した後、ユーザーはアプリケーションとFacebookからログアウトする必要があります。アプリケーションがセッションCookieを使用している場合、ブラウザを閉じるとユーザーはログアウトされます。