ユーザがFacebook側でアプリを削除してしまった場合、それを知るにはどうするのが良いんだろうという話があったので、その時の対処方法の共有です。

自分のサービス内に退会ページを設置でき、それをユーザが使ってくれれば単純なのですが、Facebookアプリの場合、ユーザはFacebook上の管理画面からアプリを削除してしまうことができます。この場合、アプリ側で削除処理を知ることができず、ユーザのデータが公開されたまま残ってしまったりして厄介な場合があります。

その場合の対応として、ドキュメントのAuthenticationのApp Deauthorizationという項目には以下の方法が紹介されています。

ユーザがApp Dashboardからアプリケーションを取り除いてしまったり、News Feedでアプリケーションをブロックすると、アプリケーション側はDeveloper Appで指定する Deauthorize Callback URLから通知されます。アプリケーションを取り除くとき、HTTP POSTリクエストでsigned_requestというパラメータが送られ、デコードすると削除したユーザのuser_idを含むJSONオブジェクトになります。このリクエストではユーザのaccess tokenは渡されず、また、この時点で該当ユーザのaccess tokenは全て無効になります。

日本語でFacebookを利用している場合、この設定項目は「アプリ設定画面 > 詳細 > 認証拒否時のコールバック先」で設定できます。



auth



このsigned_requestのデコードの方法や、デコードして得られるJSONオブジェクトの各種フィールドについてはSigned Requestの和訳を参照してください。