Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

在Android上開始使用Firebase身份驗證

將您的應用程序連接到Firebase

如果尚未將Firebase添加到您的Android項目中

將Firebase身份驗證添加到您的應用

使用Firebase Android BoM ,在模塊(應用程序級)Gradle文件(通常為app/build.gradle )中聲明Firebase Authentication Android庫的依賴app/build.gradle

爪哇

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:26.6.0')

    // Declare the dependency for the Firebase Authentication library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth'
}

通過使用Firebase Android BoM ,您的應用將始終使用Firebase Android庫的兼容版本。

(可選)使用BoM聲明Firebase庫依賴關係

如果選擇不使用Firebase BoM,則必須在其依賴關係行中指定每個Firebase庫版本。

請注意,如果您在應用中使用多個Firebase庫,我們強烈建議您使用BoM來管理庫版本,以確保所有版本都兼容。

dependencies {
    // Declare the dependency for the Firebase Authentication library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth:20.0.3'
}

Kotlin + KTX

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:26.6.0')

    // Declare the dependency for the Firebase Authentication library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth-ktx'
}

通過使用Firebase Android BoM ,您的應用將始終使用Firebase Android庫的兼容版本。

(可選)使用BoM聲明Firebase庫依賴關係

如果選擇不使用Firebase BoM,則必須在其依賴關係行中指定每個Firebase庫版本。

請注意,如果您在應用中使用多個Firebase庫,我們強烈建議您使用BoM來管理庫版本,以確保所有版本都兼容。

dependencies {
    // Declare the dependency for the Firebase Authentication library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth-ktx:20.0.3'
}

要使用身份驗證提供程序,您需要在Firebase控制台中啟用它。轉到“ Firebase身份驗證”部分的“登錄方法”頁面,以啟用電子郵件/密碼登錄以及您想要為應用程序提供的任何其他身份提供程序。

(可選)使用Firebase Local Emulator Suite進行原型製作和測試

在討論您的應用程序如何對用戶進行身份驗證之前,讓我們介紹一套可用於原型化和測試身份驗證功能的工具:Firebase Local Emulator Suite。如果您要決定使用哪種身份驗證技術和提供程序,請使用“身份驗證和Firebase安全規則”或使用登錄UI設計原型來嘗試使用公共數據和私有數據創建不同的數據模型,那麼能夠在本地工作而無需部署實時服務可能是個好主意。

身份驗證仿真器是本地仿真器套件的一部分,它使您的應用程序可以與仿真的數據庫內容和配置以及可選的仿真的項目資源(功能,其他數據庫和安全規則)進行交互。請注意,本地仿真器套件尚不支持仿真的雲存儲。

使用身份驗證仿真器僅涉及幾個步驟:

  1. 在應用程序的測試配置中添加一行代碼以連接到仿真器。
  2. 在本地項目目錄的根目錄中,運行firebase emulators:start
  3. 使用Local Emulator Suite UI進行交互式原型製作,或使用Authentication emulator REST API進行非交互式測試。

有關將您的應用程序連接到身份驗證仿真器的詳細指南,請參見。有關更多信息,請參見Local Emulator Suite簡介

現在,讓我們繼續如何驗證用戶身份。

檢查當前身份驗證狀態

  1. 聲明一個FirebaseAuth實例。

    爪哇

    private FirebaseAuth mAuth;

    Kotlin + KTX

    private lateinit var auth: FirebaseAuth
  2. onCreate()方法中,初始化FirebaseAuth實例。

    爪哇

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin + KTX

    // Initialize Firebase Auth
    auth = Firebase.auth
  3. 在初始化您的活動時,請檢查用戶當前是否已登錄。

    爪哇

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }

    Kotlin + KTX

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        if(currentUser != null){
            reload();
        }
    }

註冊新用戶

創建一個新的createAccount方法,該方法將接收電子郵件地址和密碼,對其進行驗證,然後使用createUserWithEmailAndPassword方法創建一個新用戶。

爪哇

mAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "createUserWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "createUserWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }

                // ...
            }
        });

Kotlin + KTX

auth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "createUserWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "createUserWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }

            // ...
        }

添加一個表單以使用他們的電子郵件和密碼註冊新用戶,並在提交新方法時調用此新方法。您可以在我們的快速入門示例中看到一個示例

登錄現有用戶

創建一個新的signIn方法,該方法將接收電子郵件地址和密碼,對其進行驗證,然後使用signInWithEmailAndPassword方法signInWithEmailAndPassword用戶。

爪哇

mAuth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                    // ...
                }

                // ...
            }
        });

Kotlin + KTX

auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
                // ...
            }

            // ...
        }

添加一個表單以使用他們的電子郵件和密碼登錄用戶,並在提交新方法時調用此新方法。您可以在我們的快速入門示例中看到一個示例

訪問用戶信息

如果用戶成功登錄,則可以使用getCurrentUser方法隨時獲取其帳戶數據。

爪哇

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

Kotlin + KTX

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = user.displayName
    val email = user.email
    val photoUrl = user.photoUrl

    // Check if user's email is verified
    val emailVerified = user.isEmailVerified

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getToken() instead.
    val uid = user.uid
}

下一步

瀏覽有關添加其他身份和身份驗證服務的指南: