🔥
FlutterでFirebaseAuth+FirebaseUIAuthを設定する手順
Github |
---|
自分用のため、公式の説明を焼き直してまとめただけな上、自分が使った機能しか書いていません。
リファレンス
インストール
flutter pub add firebase_auth firebase_ui_auth firebase_ui_localizations
多言語対応
MaterialApp.localizationsDelegates
にFirebaseUILocalizations.delegate
を追加します。
class MyApp extends ConsumerWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(routerProvider);
return MaterialApp.router(
title: 'My App',
routerConfig: router,
localizationsDelegates: [
...context.localizationDelegates,
+ FirebaseUILocalizations.delegate, // 追加
],
supportedLocales: context.supportedLocales,
locale: context.locale,
);
}
}
easy_localization
やflutter_riverpod
,go_router
を使っている場合の例です。
メールリンクサインイン
こちらで
Google Sign In
flutter pub add firebase_ui_oauth_google
Firebaseの設定
Firebaseのコンソール上でAuthenticationのログインプロバイダにGoogleを追加します。
- Android用にSHA-1の設定が必要なので下の項目で説明します。
- iOS用にはGoogleService-Info.plistを更新する必要があります。
Android用設定
- SHA-1の設定で取得したSHA-1をFirebaseのAndroidアプリに登録します。
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
-
OAuth同意画面の必須項目を設定します。
-
デベロッパーの連絡先情報
が必須ですが、入力されていない場合がありますので入力します。 - 他の項目も必要に応じて入力します。
-
iOS用設定
CFBundleURLTypes属性をios/Runner/Info.plist
に追加します。
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- TODO Replace this value: -->
<!-- Copied from GoogleService-Info.plist key REVERSED_CLIENT_ID -->
<string>[YOUR REVERSED CLIENT ID]</string>
</array>
</dict>
</array>
Dart実装
SignInScreen(
providers: [
GoogleProvider(clientId: '', iOSPreferPlist: true),
],
);
Sign in with Apple
flutter pub add firebase_ui_oauth_apple
Firebaseの設定
Firebaseのコンソール上でAuthenticationのログインプロバイダにAppleを追加します。
- Android/Webでも有効にするには設定が必要です。下の項目で説明します。
- Darwin向けにはFirebase上の設定は特にありません。
Android/Webの設定
Firebaseの設定に必要なのは4つあります。
手順は長いので折りたたみますが、ポチポチするだけです。
- Sign in with Apple用のServiceID
ServiceIDの取得
- Certificates, Identifiers & ProfilesのIdentifiersにアクセスします。
-
+
ボタンをクリックしてServiceIDを作成します。description
とidentifier
を入力して作成を完了します。-
description
はログイン画面にサービス名として表示される名前になります。
-
- 今作成したServiceIDが一覧にあると思うのでそれをクリックします。
-
Sign In with Apple
にチェックを入れてConfigure
をクリックします。-
Primary App ID
には今回紐づけるアプリのBundle IDを入力します。 -
Domains and Subdomains
には<your-firebase-project-id>.firebaseapp.com
を入力します。 -
Return URLs
にはhttps://<your-firebase-project-id>.firebaseapp.com/__/auth/handler
を入力します。これはFirebaseコンソールでAppleのプロバイダ設定をする際にコピーできます。
-
- 設定が終わったら
Continue
→Save
で設定を保存します。 - 先ほど設定したServiceIDをFirebaseのコンソールのAppleのプロバイダ設定に追加すれば完了です。
- Team ID → こちらで確認
- Key ID と 秘密鍵
作成方法
既にPush通知用などで秘密鍵を持っている場合はそれを使っても構いません。
- 今度はCertificates, Identifiers & ProfilesのKeysにアクセスします。
-
+
ボタンをクリックしてKey
を作成します。-
Key Name
に任意の名前を入力します。 -
Sign in with Apple
にチェックを入れます。 -
Configure
からPrimary App ID
に今回紐づけるアプリのBundle IDを選択します。 - 戻って
Continue
→Register
で設定を完了します。 - Keyを
Download
します。1度しかできないので安全な場所にバックアップしておきます。 - また、
Key ID
が作られるのでこれもメモします。
-
用意できたらFirebaseコンソールに戻り、Appleのプロバイダ設定にOAuth コードフローの構成(省略可)
に追加してください。
省略可ありますが、AndroidとWebで使うには必要です。
iOSの設定
- Xcode上でSign in with Appleを有効にします。
open ios/Runner.xcworkspace
- Signing & Capabilitiesタブを開き、「+ Capability」から「Sign in with Apple」を追加します。
- Firebaseのコンソール上でSign in with Appleを有効にします。
Dart実装
SignInScreen(
providers: [
AppleProvider(),
],
);
<!--
匿名メールアドレスの転送設定
登録に利用されるランダムなメールアドレスとやりとり出来るメールアドレスやドメインを設定します。
- Certificates, Identifiers & ProfilesのServicesから
Sign in with Apple for Email Communication
のConfigure
をクリックします。 -
+
ボタンをクリックしてEmail Domain
を追加します。-
Domain
にはやり取りしたいメールアドレスのドメインがあれば入力します。 -
Email Address
にnoreply@<your-firebase-project-id>.firebaseapp.com
かカスタムしている場合はそれを入力します。
-->
-
Discussion