
FirebaseUI は Firebase Authentication SDK の上に構築されるライブラリで、アプリで使用するドロップイン UI フローを提供します。FirebaseUI には次の利点があります。
- 複数のプロバイダ - メール、電話認証、Google ログイン、Facebook ログイン、および Twitter ログインが使用できます。
- アカウント管理 - アカウントの作成、パスワードのリセットなどのアカウント管理タスクを処理できます。
- アカウントのリンク - ID プロバイダ間でユーザー アカウントを安全にリンクできます。
- カスタムテーマ - FirebaseUI の外観はアプリに合わせてカスタマイズできます。FirebaseUI はオープンソースであるため、必要に応じてプロジェクトをフォークしてカスタマイズすることもできます。
- Smart Lock for Passwords - Smart Lock for Passwords と自動的に統合され、迅速なクロスデバイス ログインを可能にします。
準備
アプリレベルの
build.gradleファイルに FirebaseUI の依存関係を追加します。Facebook や Twitter によるログインをサポートする場合は、次のように Facebook と Twitter の SDK も含めます。dependencies { // ... implementation 'com.firebaseui:firebase-ui-auth:4.1.0' // Required only if Facebook login support is required // Find the latest Facebook SDK releases here: https://goo.gl/Ce5L94 implementation 'com.facebook.android:facebook-android-sdk:4.x' // Required only if Twitter login support is required // Find the latest Twitter SDK releases here: https://goo.gl/E5wZvQ implementation 'com.twitter.sdk.android:twitter-core:3.x' }FirebaseUI Auth SDK には、Firebase SDK と Google Play 開発者サービス SDK に対する一時的な依存関係があります。
アプリを Firebase プロジェクトに接続していない場合は、Firebase コンソールで接続します。
Firebase コンソールで [Authentication] セクションを開き、サポートするログイン方法を有効にします。一部のログイン方法では追加情報が必要となります。通常、その情報はサービスのデベロッパー コンソールにあります。
Google ログインをサポートし、アプリの SHA-1 フィンガープリントを指定していない場合は、Firebase コンソールの [設定] ページでフィンガープリントを設定します。アプリの SHA-1 フィンガープリントを取得する方法の詳細については、クライアントの認証をご覧ください。
Facebook または Twitter によるログインをサポートする場合は、各プロバイダに必要な識別情報を指定する文字列リソースを
strings.xmlに追加します。<resources> <!-- Facebook application ID and custom URL scheme (app ID prefixed by 'fb'). --> <string name="facebook_application_id" translatable="false">YOUR_APP_ID</string> <string name="facebook_login_protocol_scheme" translatable="false">fbYOUR_APP_ID</string> <!-- Twitter consumer key and secret --> <string name="twitter_consumer_key" translatable="false">YOUR_CONSUMER_KEY</string> <string name="twitter_consumer_secret" translatable="false">YOUR_CONSUMER_SECRET</string> </resources>
ログイン
FirebaseUI ログインフローを開始するには、任意のログイン方法を含むログイン インテントを作成します。
Java
Android
// Choose authentication providers
List<AuthUI.IdpConfig> providers = Arrays.asList(
new AuthUI.IdpConfig.EmailBuilder().build(),
new AuthUI.IdpConfig.PhoneBuilder().build(),
new AuthUI.IdpConfig.GoogleBuilder().build(),
new AuthUI.IdpConfig.FacebookBuilder().build(),
new AuthUI.IdpConfig.TwitterBuilder().build());
// Create and launch sign-in intent
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
RC_SIGN_IN);
Kotlin
Android
// Choose authentication providers
val providers = arrayListOf(
AuthUI.IdpConfig.EmailBuilder().build(),
AuthUI.IdpConfig.PhoneBuilder().build(),
AuthUI.IdpConfig.GoogleBuilder().build(),
AuthUI.IdpConfig.FacebookBuilder().build(),
AuthUI.IdpConfig.TwitterBuilder().build())
// Create and launch sign-in intent
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
RC_SIGN_IN)
ログインフローが完了すると、onActivityResult に結果が返されます。
Java
Android
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
IdpResponse response = IdpResponse.fromResultIntent(data);
if (resultCode == RESULT_OK) {
// Successfully signed in
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
// ...
} else {
// Sign in failed. If response is null the user canceled the
// sign-in flow using the back button. Otherwise check
// response.getError().getErrorCode() and handle the error.
// ...
}
}
}
Kotlin
Android
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == RC_SIGN_IN) {
val response = IdpResponse.fromResultIntent(data)
if (resultCode == Activity.RESULT_OK) {
// Successfully signed in
val user = FirebaseAuth.getInstance().currentUser
// ...
} else {
// Sign in failed. If response is null the user canceled the
// sign-in flow using the back button. Otherwise check
// response.getError().getErrorCode() and handle the error.
// ...
}
}
}
ログアウト
FirebaseUI には、Firebase Authentication およびすべてのソーシャル ID プロバイダからログアウトするための便利な方法があります。
Java
Android
AuthUI.getInstance()
.signOut(this)
.addOnCompleteListener(new OnCompleteListener<Void>() {
public void onComplete(@NonNull Task<Void> task) {
// ...
}
});
Kotlin
Android
AuthUI.getInstance()
.signOut(this)
.addOnCompleteListener {
// ...
}
ユーザーのアカウントを完全に削除することもできます。
Java
Android
AuthUI.getInstance()
.delete(this)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
// ...
}
});
Kotlin
Android
AuthUI.getInstance()
.delete(this)
.addOnCompleteListener {
// ...
}
カスタマイズ
デフォルトでは、FirebaseUI はテーマに AppCompat を使用します。そのため、アプリのカラースキームが自動的に使用されます。さらにカスタマイズが必要な場合は、テーマとロゴをログイン Intent ビルダーに渡すことができます。
Java
Android
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.setLogo(R.drawable.my_great_logo) // Set logo drawable
.setTheme(R.style.MySuperAppTheme) // Set theme
.build(),
RC_SIGN_IN);
Kotlin
Android
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.setLogo(R.drawable.my_great_logo) // Set logo drawable
.setTheme(R.style.MySuperAppTheme) // Set theme
.build(),
RC_SIGN_IN)
カスタム プライバシー ポリシーと利用規約を設定することもできます。
Java
Android
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.setTosAndPrivacyPolicyUrls(
"https://example.com/terms.html",
"https://example.com/privacy.html")
.build(),
RC_SIGN_IN);
Kotlin
Android
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.setTosAndPrivacyPolicyUrls(
"https://example.com/terms.html",
"https://example.com/privacy.html")
.build(),
RC_SIGN_IN)
次のステップ
- FirebaseUI の使用とカスタマイズの詳細については、GitHub の README ファイルをご覧ください。
- FirebaseUI で見つかった問題を報告するには、GitHub の [Issues] タブを使用してください。

