PlayFramework(Java)でFacebook認証

こんにちは!!
前回に引き続きPlayFrameworkに関して。
今回はPlayFrameworkのライブラリを使って、FacebookをOAuth認証させたいと思います。

開発環境

  • PlayFramework2.4
  • Java8
  • 認証ライブラリ:pac4j v1.9
  • FacebookAPI v2.8
今回利用するpac4jというライブラリは認証を簡単にできるライブラリで
ここに書いてある通りに書けば、
問題なく動作はします!!

が、今回は1点問題があり、動作がしなくなったので、
その解決策を書いていきます。

問題点

FacebookAPIのバージョンが新しすぎて、ユーザーのプロフィール情報を取得する為のプロパティが変わってしまった。
facebook for developersにこのように書かれています。 現在、pac4jではbioを取得してきているので、そこをaboutに変更しないとダメということだそうです。
このbioの取得が任意ならよかったのですが、認証時に必ず取得して来てしまうプロパティなのです。

認証ライブラリを書き換える

今回書き換えるクラスは2つ!!
  • FacebookAttributesDefinition.java
  • FacebookClient.java
です。
2つのクラスの変更する箇所はこちら!!

FacebookAttributesDefinition.java

41行目くらいにBIOプロパティを宣言しているので、そこをaboutに書き換えてしまいましょう!!

FacebookClient.java

55行目くらいにフィールドを宣言している中にbioという文字があるので、そこをaboutに変更!! これらに加えて、FacebookProfile.javaというクラスをライブラリから独立させて
自分のプロジェクトに加えると
今までbioを取得していたものがaboutを取得するようになります!!

今回の反省

FacebookAPIを利用するときは開発をする時にバージョンと仕様を確認して、利用するライブラリを決めないといけないです。
外部APIに依存しすぎるのはよくないですが、Facebook認証は強力なので、
変更に臨機応変に対応するしか無いですね。。。