谷歌致力於推進種族平等的黑人社區。 怎麼看。
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

與火力地堡驗證Android上使用自定義身份驗證系統

您可以通過修改您的身份驗證服務器生成自定義簽名的令牌當用戶成功的標誌有一個自定義的驗證系統整合火力地堡認證。您的應用程序接收此令牌,並用它來與火力地堡進行身份驗證。

在你開始之前

  1. 如果你還沒有, 添加火力地堡到您的Android項目
  2. 在項目級build.gradle文件,確保包括兩個你谷歌的Maven倉庫buildscriptallprojects部分。
  3. 對於火力地堡認證的Android庫的依賴添加到您的模塊(應用程序級)搖籃文件(通常是app/build.gradle ):
    implementation 'com.google.firebase:firebase-auth:19.3.2'
  4. 讓你的項目的服務器密鑰:
    1. 轉至服務帳戶在項目的設置頁面。
    2. 點擊在服務帳戶頁的火力地堡聯繫SDK部分底部的生成新的私鑰
    3. 這項新的服務帳戶的公鑰/私鑰對,自動保存在您的計算機上。將此文件複製到你的認證服務器。

身份驗證與火力地堡

  1. 在您登入活動的onCreate方法,得到的共享實例FirebaseAuth對象:

    Java的

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

    科特林+ KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. 當初始化您的活動,請檢查用戶是否在當前已登錄:

    Java的

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

    科特林+ KTX

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        updateUI(currentUser)
    }
  3. 當用戶登錄到您的應用程序,送他們的登錄憑據(例如,用戶名和密碼),以您的身份驗證服務器。你的服務器檢查憑據,並返回一個自定義的令牌 ,如果它們是有效的。
  4. 您收到您的身份驗證服務器令牌自定義後,將其傳遞到signInWithCustomToken在用戶登錄:

    Java的

    mAuth.signInWithCustomToken(mCustomToken)
            .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, "signInWithCustomToken:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCustomToken:failure", task.getException());
                        Toast.makeText(CustomAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });

    科特林+ KTX

    customToken?.let {
        auth.signInWithCustomToken(it)
                .addOnCompleteListener(this) { task ->
                    if (task.isSuccessful) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCustomToken:success")
                        val user = auth.currentUser
                        updateUI(user)
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCustomToken:failure", task.exception)
                        Toast.makeText(baseContext, "Authentication failed.",
                                Toast.LENGTH_SHORT).show()
                        updateUI(null)
                    }
                }
    }
    如果登錄成功, AuthStateListener可以使用getCurrentUser方法來獲取用戶的帳戶數據。

下一步

在首次用戶登錄後,將創建一個新的用戶帳戶,並鏈接到證書,也就是說,用戶名和密碼,電話號碼,或者在簽署身份驗證提供者的信息 - 用戶。這個新的帳戶存儲為您的火力地堡計劃的一部分,並可以用於識別跨越每一個應用程序,用戶在你的項目,不管如何在用戶登錄。

  • 在您的應用程序,你可以從用戶的基本資料信息FirebaseUser對象。請參閱管理用戶

  • 在你的火力地堡實時數據庫和雲存儲安全規則 ,你可以得到簽署的,從用戶的唯一的用戶ID auth的變量,並用它來控制哪些數據的用戶可以訪問。

您可以允許用戶通過使用多個身份驗證提供登錄到您的應用程序連接身份驗證提供憑據到現有的用戶帳戶。

要註銷用戶,請撥打signOut

Java的

FirebaseAuth.getInstance().signOut();

科特林+ KTX

Firebase.auth.signOut()