2012 年 9 月 3 日

facebookアプリが削除されたときのアプリの作法

Facebook

アプリが削除されたということは、どのようにアプリ側に通知されるのでしょうか。また、アプリではどんな処理をすべきでしょうか。Facebookアプリの設定でDeauthorize URLを設定しておくと、ユーザーがアプリを削除したときにこのURLが呼び出しされます。

アプリが削除されたとき、signed_requestが付加されてPOSTで呼び出しされます。

Application De-authorization

ここの説明の通り、削除要求したユーザーの情報が(テキスト化されたJSONオブジェクトがBAE64エンコーディングされています)signed_request(署名された状態)として送られてきます。この内容にそって、アプリ側ではユーザー情報を削除します。

では、実際にどんなJSONが送られてくるのか、実際の例を示しておきます(PHPでの出力)。

ユーザーにインストールしたアプリを削除

ユーザーにインストールするアプリ(ページにインストールするアプリでもユーザーから削除した場合はこちらが送信されます)では、以下のようにユーザーID(例では999999999としています)が送信されます。

 'algorithm' => 'HMAC-SHA256',
  'issued_at' => 1340590260,
  'user' => 
  array (
    'country' => 'jp',
    'locale' => 'ja_JP',
  ),
  'user_id' => '999999999'

ページにインストールしたアプリを削除

profile_idにページIDが入っています(例では999999999999999)。

 'algorithm' => 'HMAC-SHA256',
  'issued_at' => 1333327393,
  'profile_id' => '999999999999999',
  'user' => 
  array (
    'country' => 'jp',
    'locale' => 'ja_JP',
  ),
  'user_id' => '0'

ドキュメントにはアプリに対するアカウント設定を変更した場合も呼び出されるように書かれていますが、私のアプリでは今のところ呼び出しされたことがありません。
アプリが削除されたときは、個人情報保護の観点からも、ユーザー情報のクリーンアップを正しく処理しておかなければなりません。