FacebookのOAuthでユーザー認証する

最近のトレンドである、外部サイトで本人認証を代行してもらう方法を検証してみましょう。
データとしてリスクのあるIDやパスワード等を管理する手間が省けます。
今回はfacebookのOAuth認証を利用します。
一連の流れは、
https://graph.facebook.com/oauth/authorize で認証コードをもらい、
https://graph.facebook.com/oauth/access_token でアクセストークンをもらいます。
https://graph.facebook.com/me?access_token="取得したアクセストークン" で取得できるデータのidを個人特定のキーとして利用できます。
とっても簡単です。
(事前にアプリの登録が必要です)

認証コード取得時のscopeにoffline_accessを付与すると、有効期限なしのトークンが取得できます。
但し、ユーザーがパスワードを変更すると、無効になるそうです。


認証コード取得時とアクセストークン取得時に付与するredirect_uriの値が同じになっていないと、エラーになってしまいますので気をつけましょう。
(ちょっとハマった)
{
   "error": {
      "type": "OAuthException",
      "message": "Error validating verification code."
   }
}