ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

Facebookの"user"テーブルの"can_message"カラムが常にtrueを返す

概要

FacebookのFQLで"user"テーブルの"can_message"カラムを取得すると常にtrueが返ります。

現象

Facebookのメッセージフィルタ設定には
・基本フィルタ
・絞り込み
の2種類があります。このいずれを選んだ状態でも
select can_message from user where uid=[USER_ID]
の結果はtrueになります。

原因

現在、この"can_message"カラムはおそらく意味のないものとなっています。というのも、昨年末に行われたFacebookのメッセージフィルタに関する仕様変更が影響していると思われるためです。
Facebook、メッセージのフィルタ設定の新設と有料メッセージテストを発表 - ITmedia エンタープライズ
この記事によれば、以前のメッセージフィルタ設定ではメッセージを送信できるユーザーを制限できました(例えば友達のみとか)。それが新しいフィルタ設定に移行し、ユーザー制限に代わってフォルダの振り分けに変更されました。これに伴い、ユーザー制限の状態を表していたと思われる"can_message"カラムは常にtrueを返すこととなったようです。

参考

stackoverflowの回答の中でこの件に触れている方がいます。
Facebook UI, how to check if a user can send facebook message to another user - Stack Overflow
Stéphane Bruckertさんの回答です。そのうち廃止されるのでは?とも予測しているようですね。