Facebook OAuth 2.0 を使用して、 everyauthを使用してユーザーを登録/ログイン/ログアウトするNode.js Web アプリケーションがあります。
Facebook アプリケーションでオフライン アクセスの廃止を有効にしたので、2 か月後、またはユーザーがパスワードを変更したとき、またはアプリケーションを削除したときに有効期限が切れるトークンを受け取るようになりましたが、Facebook からログアウトしたときではありません。
私のアプリケーションは複数の Web サイトの iframe に埋め込まれており、ユーザーの Facebook タイムラインに更新をプッシュするために使用されます。
サイト A とサイト B にアプリケーションをインストールしたとします。ユーザー X が A でアプリケーションにログインすると、iframe がセッションを保持するため、ユーザー X は B でもアプリケーションにログインします。
問題
ユーザー X が Facebook からログアウトすると、私のアプリケーションがインストールされているサイトで同じコンピューターを使用している他のユーザーが、X に代わって更新をプッシュします。
更新をプッシュする前に、X がまだ Facebook にログインしているかどうかを判断する方法はありますか?
つまり、Facebook の JavaScript SDK FB.getLoginStatusに似たものが必要ですが、 Node.jsのサーバー側に必要です。一番良いのはGraph API呼び出しですが、適切なURLが見つかりません。
不完全な解決策:
最後に、コメントに記載されている@NitzanTomerのソリューションを使用しました。JavaScript SDKとそのFB.getLoginStatus
メソッドを使用して、アプリケーションの現在のユーザーがまだ Facebook にログインしているかどうかを確認しました。これは理想とはほど遠いものです。私の場合は iframe で JavaScript コードを実行しているため機能し、同一生成元ポリシーによって攻撃から比較的保護されています。