Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

ตรวจสอบสิทธิ์กับ Firebase โดยไม่ระบุชื่อบน Android

คุณสามารถใช้ Firebase Authentication เพื่อสร้างและใช้บัญชีชั่วคราวที่ไม่ระบุชื่อเพื่อตรวจสอบสิทธิ์กับ Firebase บัญชีที่ไม่ระบุตัวตนชั่วคราวเหล่านี้สามารถใช้เพื่ออนุญาตให้ผู้ใช้ที่ยังไม่ได้ลงชื่อสมัครใช้แอปของคุณทำงานกับข้อมูลที่ได้รับการปกป้องโดยกฎความปลอดภัย หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจลงชื่อสมัครใช้แอปของคุณคุณสามารถ เชื่อมโยงข้อมูลรับรองการลงชื่อเข้าใช้ของพวกเขากับบัญชีที่ไม่ระบุตัวตน เพื่อให้พวกเขาสามารถทำงานกับข้อมูลที่ได้รับการป้องกันในเซสชันต่อไปได้

ก่อนที่คุณจะเริ่ม

  1. เพิ่ม Firebase ในโครงการ Android ของคุณ หากยังไม่ได้ ทำ
  2. ในโครงการระดับ build.gradle ไฟล์ให้แน่ใจว่าจะรวมถึงพื้นที่เก็บข้อมูล Maven ของ Google ในทั้งสองของคุณ buildscript และ allprojects ส่วน
  3. เพิ่มการอ้างอิงสำหรับไลบรารี Android ของ Firebase Authentication ไปยังโมดูลของคุณ (ระดับแอป) ไฟล์ Gradle (โดยปกติคือ app/build.gradle ):
    implementation 'com.google.firebase:firebase-auth:19.4.0'
  4. หากคุณยังไม่ได้เชื่อมต่อแอปของคุณกับโปรเจ็กต์ Firebase ให้ทำจาก คอนโซล Firebase
  5. เปิดใช้งานการตรวจสอบสิทธิ์แบบไม่ระบุตัวตน:
    1. ใน คอนโซล Firebase เปิดส่วน Auth
    2. ใน หน้า วิธีการลงชื่อเข้าใช้ ให้เปิดใช้งานวิธีการลงชื่อเข้าใช้แบบ ไม่ระบุชื่อ

ตรวจสอบสิทธิ์กับ Firebase โดยไม่ระบุตัวตน

เมื่อผู้ใช้ที่ออกจากระบบใช้คุณลักษณะของแอปที่ต้องมีการตรวจสอบสิทธิ์กับ Firebase ให้ลงชื่อเข้าใช้โดยไม่ระบุตัวตนโดยทำตามขั้นตอนต่อไปนี้

  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. สุดท้ายโทร signInAnonymously ลงชื่อเข้าใช้ในฐานะที่เป็นผู้ใช้ที่ไม่ระบุชื่อ:

    Java

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

    โคตรลิน + KTX

    auth.signInAnonymously()
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInAnonymously:success")
                    val user = auth.currentUser
                    updateUI(user)
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInAnonymously:failure", task.exception)
                    Toast.makeText(baseContext, "Authentication failed.",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
    
                // ...
            }
    หากการลงชื่อเข้าใช้สำเร็จคุณสามารถใช้เมธอด getCurrentUser เพื่อรับข้อมูลบัญชีของผู้ใช้

แปลงบัญชีนิรนามเป็นบัญชีถาวร

เมื่อผู้ใช้ที่ไม่ระบุชื่อลงชื่อสมัครใช้แอปของคุณคุณอาจต้องการอนุญาตให้พวกเขาทำงานต่อโดยใช้บัญชีใหม่ได้เช่นคุณอาจต้องการทำให้สินค้าที่ผู้ใช้เพิ่มลงในรถเข็นช็อปปิ้งของพวกเขาก่อนที่จะลงชื่อสมัครใช้ในแอปใหม่ ตะกร้าสินค้าของบัญชี โดยทำตามขั้นตอนต่อไปนี้:

  1. เมื่อผู้ใช้ลงชื่อสมัครใช้ให้กรอกขั้นตอนการลงชื่อเข้าใช้สำหรับผู้ให้บริการการตรวจสอบสิทธิ์ของผู้ใช้จนถึง แต่ไม่รวมถึงการเรียกใช้เมธอด FirebaseAuth.signInWith ตัวอย่างเช่นรับโทเค็น Google ID ของผู้ใช้โทเค็นการเข้าถึง Facebook หรือที่อยู่อีเมลและรหัสผ่าน
  2. รับ AuthCredential สำหรับผู้ให้บริการรับรองความถูกต้องใหม่:

    การลงชื่อเข้าใช้ Google

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);

    โคตรลิน + KTX

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
    เข้าสู่ระบบ Facebook

    Java

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

    โคตรลิน + KTX

    val credential = FacebookAuthProvider.getCredential(token.token)
    การลงชื่อเข้าใช้อีเมล - รหัสผ่าน

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);

    โคตรลิน + KTX

    val credential = EmailAuthProvider.getCredential(email, password)
  3. ส่งผ่านวัตถุ AuthCredential ไปยังเมธอด linkWithCredential ของผู้ใช้ที่ลงชื่อเข้าใช้:

    Java

    mAuth.getCurrentUser().linkWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "linkWithCredential:success");
                        FirebaseUser user = task.getResult().getUser();
                        updateUI(user);
                    } else {
                        Log.w(TAG, "linkWithCredential:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
    
                    // ...
                }
            });

    โคตรลิน + KTX

    auth.currentUser!!.linkWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    Log.d(TAG, "linkWithCredential:success")
                    val user = task.result?.user
                    updateUI(user)
                } else {
                    Log.w(TAG, "linkWithCredential:failure", task.exception)
                    Toast.makeText(baseContext, "Authentication failed.",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
    
                // ...
            }

หากการเรียกใช้ linkWithCredential สำเร็จบัญชีใหม่ของผู้ใช้จะสามารถเข้าถึงข้อมูล Firebase ของบัญชีที่ไม่ระบุชื่อได้

ขั้นตอนถัดไป

ตอนนี้ผู้ใช้ตรวจสอบสิทธิ์กับ Firebase ได้แล้วคุณสามารถควบคุมการเข้าถึงข้อมูลในฐานข้อมูล Firebase ได้ โดยใช้ กฎ Firebase