2

私はたくさん検索してきましたが、これに対する具体的な解決策は見つかりませんでした。私のFBアプリのユーザーはFBアクセストークンを取得し、手動でFBからログアウトしますが、トークンは引き続き有効です。なんで?これはバグですか?ユーザーがFBからログオフしたかどうかを確認するにはどうすればよいですか?
使用するバックエンドに関係なく、FBから手動でログアウトし、https://graph.facebook.com/me? access_token = OLd_ACCESS_TOKENのようなURLを入力すると、ユーザーに関するすべての情報を取得できます。ここ
を 見てください:シナリオ#4。トークンは無効である必要があります!
私が必要としているのは、どのFBユーザーが私のFBキャンバスサイトで現在操作を実行しているかを判別することです。FB apiは、ユーザーのデータを取得できるカスタムキャンバスアプリケーション用の単一のエントリポイントを提供します。アプリのキャンバスURL(signed_request文字列を解析します)。その時点から、Cookieまたはユーザーの資格情報(ID、トークン)を記憶するものを作成し、それを将来の操作に使用する必要があるようです。これは、ユーザーが別のブラウザータブで別のFBアカウントで再ログオンし、古いアカウントでアプリを引き続き使用できるため、あまり良くありません。
現在のユーザーを知りたい場合は、すべてのバックエンド操作の前に、アクセストークンの有効性を確認する必要があります。ユーザーを認証ページにリダイレクトし(まだの場合)、ユーザーのデータをCookieに保存します。次のすべての操作では、そのCookieからユーザー情報を抽出し、保存されたアクセストークンを使用します。しかし今、トークンが有効な場合、ユーザーがFBからログアウトしても、すべてをメンテナンスする方法がわかりません:(
助けてください!
ありがとう。
更新!
同じユーザーに対して異なるアクセストークンを取得できることがわかりました:
1)キャンバスのsigned_requestパラメーターから抽出されたトークンUrlは正常に機能しており、ユーザーがログオフすると無効になります2)サーバー側の認証フロー中にCODEが交換されたトークン(https://www.facebook.com/dialog/oauthにリダイレクト?...、指定されたredirect_uriでCODEをキャッチし、 https: //graph.facebook.com/oauth/access_tokenを使用してトークンのCODEを交換しますか?...)-まあ、このトークンは長期間存続します。
私は最初のケースで作業する必要があるようです。とにかく、それはすべて私にとって十分に明確ではありません。
UPDATE2
はい、そうです。ドキュメントには、signed_requestトークンを使用するように記載されています。それ以外の場合、認証されていないように設定されている場合は、認証フローを実行し、他の方法でトークンを取得します。最後の方法では、ユーザーがアプリケーションからログオフした場合に存続するトークンを生成します。

4

1 に答える 1

1

まあ、一時的な解決策は、キャンバス URL のアクションの signed_request パラメータで指定されたトークンのみを使用することです。

于 2012-05-29T01:04:12.077 に答える