-1

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 コードを実行しているため機能し、同一生成元ポリシーによって攻撃から比較的保護されています。

4

2 に答える 2

1

FB.getLoginStatus を使用して、ユーザーが Facebook に接続しているかどうかを確認できます: https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

于 2012-04-12T10:26:52.210 に答える
0

getLoginStaus 関数は amachang の facebook-node-sdk にはありませんが、使用できるのは getLoginStatusUrl 関数です: facebook-node-sdk

戻り値が ok_session プロパティに割り当てた URL である場合、ユーザーはログインしています。ただし、アプリに付与された権限を確認することはできません

于 2013-12-22T14:13:27.237 に答える