FacebookのSDKを使ってユーザ情報を扱うようなWebアプリケーションでは、
一度ユーザの情報を利用することを許可してもらう必要があるため
Facebook側のURLへ必要なパラメータを付けてリダイレクトし、
ユーザの意志で情報の利用の許可を行わせます。
ユーザがアプリケーションに対して一度認証すると
それ以降、Facebookにログインしていれば、
認証のダイアログは表示されなくなり、
そのままアプリーケーションへ戻ってくるようになります。
使う側からすれば毎回ダイアログがでるより、
最初の一度だけ表示されたほうが快適ではありますが、
共用のPCの場合、うっかりFacebookをログアウトし忘れたまま
他の人がそのアプリケーションを利用してしまった場合でも利用できてしまいます。
Facebookは個人情報が沢山含まれているSNSですので、
アプリケーションが扱う情報によっては、
うっかり他人に見られてしまってはまずいものもあるはずです。
そこで、一度認証している場合でもアプリケーションを利用する際には本人であることを確認させるために
パスワードの入力を求めるようにします。
AuthTypeの追加
今回はPHP SDKを利用した例を掲載します。
PHP SDKではFacebookインスタンスのgetLoginUrlを叩くことで返り値にログイン用のURLが返ってきます。
getLoginUrlには、
認証後に戻ってくるページ、
アクセストークンを取得するためのパラメータのタイプ
などを連想配列で渡してあげます。
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret' => APP_SECRET,
));
$loginUrl = $facebook -> getLoginUrl(
array(
'scope' => APP_PERMISSION,
'redirect_uri' => APP_CALLBACK,
'response_type' => 'code',
'auth_type' => 'reauthenticate'
)
);
渡している値に見慣れないものがありますね。
'auth_type' => 'reauthenticate'
を追加しています。
これを追加することによって、
getLoginUrlで返ってきたURLへリダイレクトした際に
毎回パスワードの入力を求められるようになります。