結論
以前の仕様ではFacebookアプリ -> Safariの優先順位でログインを試みたが、
FBSDKLoginKit 4.6 (4.2以降?)では自アプリ内のSafariViewController でログインダイアログが開く。
つまり、「バグではなく仕様」 です。
以前はFacebook SDK for iOS を使ってログインを実装すると以下のような手順でログインしていました。
- Facebookアプリが端末にインストールされていれば、Fast App Switching を使ってFacebookアプリ経由でログインする
- Facebookアプリが端末にインストールされていなければ、Safariが開き、ログインダイアログが表示される
iOS9におけるFacebook SDK for iOSの変更
iOS9でアプリを切り替える際、「◯◯を開きます。よろしいですか?」とアラートが表示され、ユーザーが「はい」を押すと初めて別アプリに遷移するという仕様になりました。
Facebook SDKチームではFast App Switchingを使って何度もアラートが表示されるのはユーザービリティ的に良くないと考え、アプリ内でSafariViewControllerが立ち上がるという仕様に切り替えたようです。
こうする事でアラートは一度も表示されずにログインできます。が、SafariでFacebookにログインしていないユーザーは、初回のみEmail / Passwordを入力する必要があります。
ただ、Facebookのフォーラムではこの仕様について議論が巻き起こっており、「改悪だ!」「今までで最低のアイデアだ!」などと怒号が飛び交っております。
なお、SDK 4.1以前を使えば以前の仕様のまま使えるようです。