はじめに
Firebaseを使ってソーシャルログインをやっているけど、まだSign in with Appleにまだ対応していないぞというそこのあなた!
朗報です。
あなたがFirebase UIを使ってソーシャルログインを実装していたら数分で対応できちゃいます。
ログイン画面のデザイン細かく変えたいしFirebase UIなんて使ってねーよという方はごめんなさい。本記事の対象外です。
使用するライブラリ
FirebaseUI for iOS — Auth
https://github.com/firebase/FirebaseUI-iOS/blob/master/Auth/README.md
対応方法
前準備
Firebase UIのReadmeにも記載されている「iOS で Apple を使用して認証する」を読んで設定をONにします。
特に躓くポイントはないと思われます。
「「Apple でサインイン」して Firebase で認証する」の項目以降は、実施しなくていいです。Firebase UIが全部いい感じにやってくれますからね。(ダメ開発者まっしぐら)
ソース修正
ドキュメントに従ってappleAuthProviderを追加するだけ。
// Objective-C
@import FirebaseUI;
/* ... */
NSArray<id<FUIAuthProvider>> *providers = @[
[[FUIEmailAuth alloc] init],
[[FUIGoogleAuth alloc] init],
[FUIOAuth appleAuthProvider],//ここが重要
];
self.authUI.providers = providers;
と思ったけど、Sign in with AppleはiOS13からしか動作しないのでiOS13より下もきちんと考慮するとiOSバージョンを確認してから追加すること。
NSMutableArray<id<FUIAuthProvider>> *providers = [NSMutableArray arrayWithObjects:
[[FUIGoogleAuth alloc] init],
[[FUIEmailAuth alloc] init],
nil
];
if (@available(iOS 13.0, *)) {
if ([UIDevice currentDevice].systemVersion.floatValue >= 13.0) {
// iOS 13以上の場合のみsign in with appleを追加
[providers addObject:[FUIOAuth appleAuthProvider]];
}
}
self.authUI.providers = [providers copy];
こちらの記事でavailableでOSバージョン確認する方法だと対応できないとあったので特に確認せず参考にさせてもらっています。(面倒くさがりですみません)
https://qiita.com/qinyong/items/aa348f266c05794c36b2