質問

Facebookのログインの背後にある哲学を理解しようとしています。

  1. 私がFacebookにログインしている場合、私のウェブサイトはこれを拾い上げ、自動的に私に記録されます。
  2. 私がFacebookからログアウトしているなら、私はFacebookで認証されていません、ウェブサイトはまだ動作します
  3. 私のウェブサイトまたはFacebookでログインした場合、私は認証されていて、私はFacebookや私のウェブサイトを認証されたユーザーとして使用することができます
  4. Facebookのログアウトの場合私のアプリはまだ認証されていますがFacebookはありません。
  5. アプリからログアウトしてすべてのセッションを犯して手動でクッキーを削除した場合、私は正常にログアウトできます。

    両方にログアウトした後の問題は、$facebook->getUser();getAccessToken();がまだ私の使用済みIDとトークンを維持することです。これらはどこから来たのですか?

    PHP SDKを使っています

役に立ちましたか?

解決

Facebookを使用してアプリケーションにログインすると、アプリケーションはFacebookを認証するように要求します。認証が成功すると、Facebookは認証されているアプリケーションに通知します。その後、アプリケーションは独自のセッションを維持します。

あなたのFacebookアカウントでしていることやあなたのアプリケーションは互いに変更をミラー化しないかもしれません。たとえば、Facebookアカウントのログアウト時には、アプリケーションが関係している限り、アプリケーションが認証されているため、アプリケーションはわかりません。同時に、あなたがFacebookからログアウトしたとき、Facebookはあなたがすでにログアウトしていることをあなたのアプリケーションに伝えませんでした。

アプリケーションとFacebook(または他のOAuth Provider)は独自のセッションを維持しています。 あなたの質問のための

  1. はい、あなたのウェブサイトはあなたのクライアントにあなたがログインしていることを自動的に指示するFacebookのリンクに訪問者をリダイレクトします。あなたのFacebookアカウントを使用したアプリケーション

  2. これは別々のセッションのために機能するでしょう。 Facebookからログアウトしたら、まだアプリケーションにログオンしています。アプリケーションがFacebookを介して再度あなたのアイデンティティを検証しようとするのでない限り、認証は失敗します。

  3. これは正しいですが、あなたがFacebookのないアプリケーションに登録されずにログインせずにあなたのアプリケーションにログインすることはできません(リンクアカウントの代替ログインのようなものと同じ)。ただし、その場合は、ログインしてログインフォームを使用してFacebookにログインする必要があります。アプリケーションを通じてFacebookにログインすることはできません。

  4. それは正しいです。 FacebookのログアウトがFacebookからログアウトされています。別々のセッションにより、アプリケーションのログアウトが必要です。

  5. も正しい。

    あなたのケースで起こっているのは:

    1. あなたはあなたのアプリケーションからログアウトしました
    2. あなたのホームページにリダイレクトされます
    3. あなたのホームページはあなたがログインしていないのであなたを認証しようとします
    4. あなたはFacebookにリダイレクトされます
    5. Facebookはあなたの身元を確認し、アプリケーションへのリダイレクト
    6. アプリケーションはあなたを再び認証する

      これを解決するために、ホームページは自動認証しないでください。ユーザーがクリックする必要があるボタンがあるはずです.Facebookで認証を開始する前に「Facebookでログイン」のようなものです。

      Facebookからユーザーを「ログアウト」ユーザーを強制的に表示することはできません。そのため、アプリケーションを使用した後、ユーザーはアプリケーションとFacebookのログアウトをログアウトする必要があります。アプリケーションがセッションCookieを使用している場合は、ブラウザが閉じられている場合、ユーザーはログアウトされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top