開発中のアプリでFacebook認証したいという要件が追加され、およそ2年ぶりにFacebook SDKを導入することになった。CIがJenkinsではなくbitriseに移行しているため、ビルド時間短縮のためにCarthage経由でインストールしたらしっちゃかめっちゃかになった記録です。
Facebook SDKをインストールする
Facebook SDKのインストール自体はとても簡単で、Cartfileに以下のように追記します。
github "facebook/facebook-ios-sdk" "v6.2.0"
以下のframeworkを追加する。
- FBSDKLoginKit.framework
- FBSDKCoreKit.framework
で、完了です。
Facebook SDKのインストール自体はとても簡単……なはずなのですが、最新版 v6.3.0はインストールに失敗する環境となっており、1回のビルドに20分超かかってしまうCarthage bootstrapを何度も実行するハメになってしまいました。(2020/04/03現在)
トラブル
今回のFacebook SDK導入で発生したトラブルについてです。
古いFacebook SDKをインストールしていた
元々Facebook SDK for iOSのCarthageでの配布していなかったのか、下記のCarthageをインストールするように書かれていたページがありました。
最新のFacebook SDK for iOSのリポジトリは以下の通りです。
Facebook SDK v6.3.0のインストールに失敗する
CocoaPods/Carthageともにv6.3.0のインストールに失敗する旨がIssueにあがっていた。
タイミングが悪かった。ひとつ前のバージョンの v6.2.0 をインストールすることにした。
Facebook認証画面が表示されない不具合
Facebook認証画面が表示されない不具合が発生した。これが一番致命的で頭を悩ませた。
- iOS 12.4.1 + Facebookアプリなし
- Facebook認証画面が表示される
- iOS 13.3 + Facebookアプリあり
- Facebook認証画面が表示されない
- iOS 13.4 + Facebookアプリあり
- Facebook認証画面が表示された
経緯は以下の通り。
Facebook SDK for iOS、実機で動かした時が問題なんじゃなくて、Facebookアプリが入った状態でログインしようとしたときに 何も起こらないのが問題だ。Facebookアプリがインストールされていないと、きちんとSafariVCが起動してログインできる。
— さくさん (@ch3cooh) 2020年4月2日