エンタープライズIT系エンジニアのぼやっきー

特にまとまりもなく、色々なことをぼやきます。最近はオープンソースの業務系システムに興味あり。

iOSのFacebook SDKで従来のネイティブアプリ認証を行う方法

※この記事はFBSDKCoreKit 4.16, FBSDKLoginKit 4.16で試した結果です。
※こんなことをせずともFacebookアプリで認証が出来る日を願っています。

Facebook SDKでログインする際にiOS 9から標準状態ではSFSafariViewControllerを使うようになったそうです。

従来はFacebookアプリに遷移して認証をしていたので、Facebookアプリを使ったことがあればそれの認証情報でログインが済みました。
しかし、iOS 9からFacebookアプリを開く前にアラートを出すようになって、ユーザビリティが激落ちしたからSafariで開こうぜ、という謎理論によって変更されました。

むしろSafariFacebookログインしたことないと、ログインしなきゃいけなくてクソ面倒なんですが。

そんなことで従来の方式に戻す方法。

FBSDKServerConfiguration.m

- (BOOL)useNativeDialogForDialogName:(NSString *)dialogName
{
    return @YES;
}

そう、FBSDKServerConfiguration.mのファイルを開いて戻り値を@YESに変えるだけ。