FacebookのOAuthExceptionエラーが解決

少し前まで何の問題もなく動いてたFacebookアプリが昨日辺りから突然ウォール投稿やその他全てのAPIが「Error validating application - OAuthException」というエラーが返ってきて利用出来なくなってしまった。
原因が分からず非常に困っていたところ、色々動いた結果ツイッターで同じ問題について呟いていた方に突撃して助けてもらうことが出来ました。感謝です!
以下が顛末。


varcharじゃなくtextにして解決

アクセストークンの保存は varchar じゃなく text にすることにした。↓こんな感じ(MySQL

ALTER TABLE user CHANGE access_token access_token text;

その他

ところでこの問題、何故か僕のアカウントだけは問題なく投稿できてたのも発見が遅れた原因だった。でも何で僕だけ大丈夫なんだ!?という問題もこれが解決したことで理解した。
自分のユーザIDは 1232962713 なんだが他の人のIDは 100001234512345 とかで何か長い!ってか僕だけ短い!?
あれか、Facebook開始当初にとりあえずアカウント取った人だから番号若くて桁数少ないのか。で最近はユーザ増えすぎたせいか桁数揃える為に頭に10000とか付けて桁数水増ししてある様子。
多分FacebookのアクセストークンはユーザIDやら権限情報やらが連結して詰まったものがエンコードされた値になってて、サーバはハッシュチェックだけで許認可してるとかそんな仕組みなんだろうな。
で、僕だけユーザIDが短いからそのぶんアクセストークンの文字数も少し短くなってギリギリvarchar(100)に収まってたというオチか…。