ตรวจสอบสิทธิ์โดยใช้ Apple บน Android

คุณอนุญาตให้ผู้ใช้ตรวจสอบสิทธิ์กับ Firebase โดยใช้ Apple ID ได้โดยทำดังนี้ โดยใช้ Firebase SDK เพื่อดำเนินการขั้นตอนการลงชื่อเข้าใช้ OAuth 2.0 แบบต้นทางถึงปลายทาง

ก่อนเริ่มต้น

หากต้องการลงชื่อเข้าใช้ให้ผู้ใช้ด้วย Apple ให้กำหนดค่าการลงชื่อเข้าใช้ด้วย Apple ก่อน ในเว็บไซต์ของนักพัฒนาซอฟต์แวร์ Apple จากนั้นให้ Apple เป็นผู้ให้บริการการลงชื่อเข้าใช้สำหรับ โปรเจ็กต์ Firebase

เข้าร่วมโปรแกรมนักพัฒนาซอฟต์แวร์ของ Apple

เฉพาะสมาชิกของนักพัฒนาซอฟต์แวร์ Apple เท่านั้นที่สามารถกำหนดค่าฟีเจอร์ลงชื่อเข้าใช้ด้วย Apple ได้ โปรแกรม

กำหนดค่าการลงชื่อเข้าใช้ด้วย Apple

บน Apple เว็บไซต์นักพัฒนาซอฟต์แวร์ ให้ทำตามขั้นตอนต่อไปนี้

  1. เชื่อมโยงเว็บไซต์กับแอปตามที่อธิบายไว้ในส่วนแรก จาก กำหนดค่าฟีเจอร์ลงชื่อเข้าใช้ด้วย Apple สำหรับเว็บ เมื่อได้รับข้อความแจ้ง ให้ลงทะเบียน URL ต่อไปนี้เป็น URL ย้อนกลับ:

    https://YOUR_FIREBASE_PROJECT_ID.firebaseapp.com/__/auth/handler

    คุณรับรหัสโปรเจ็กต์ Firebase ได้ใน คอนโซล Firebase หน้าการตั้งค่า

    เมื่อทำเสร็จแล้ว ให้จดรหัสบริการใหม่ที่ต้องใช้ หัวข้อถัดไป

  2. สร้าง ลงชื่อเข้าใช้ด้วยคีย์ส่วนตัวของ Apple คุณจะต้องมีคีย์ส่วนตัวและคีย์ส่วนตัวใหม่ รหัสในส่วนถัดไป
  3. หากคุณใช้ฟีเจอร์ใดๆ ของการตรวจสอบสิทธิ์ Firebase ที่ส่งอีเมลถึงผู้ใช้ ซึ่งรวมถึงการลงชื่อเข้าใช้ลิงก์อีเมล, การยืนยันที่อยู่อีเมล, การเปลี่ยนแปลงบัญชี การเพิกถอน และ คนอื่นๆ กำหนดค่าบริการส่งต่ออีเมลส่วนตัวของ Apple และลงทะเบียน noreply@YOUR_FIREBASE_PROJECT_ID.firebaseapp.com (หรือโดเมนเทมเพลตอีเมลที่กำหนดเอง) เพื่อให้ Apple ส่งต่ออีเมลที่ส่งได้ ผ่านการตรวจสอบสิทธิ์ Firebase ไปยังอีเมล Apple ที่ไม่ระบุตัวตน

เปิดใช้ Apple เป็นผู้ให้บริการการลงชื่อเข้าใช้

  1. เพิ่ม Firebase ลงในโปรเจ็กต์ Android เป็น อย่าลืมลงทะเบียนลายเซ็น SHA-1 ของแอปเมื่อคุณตั้งค่าแอปใน คอนโซล Firebase
  2. ในคอนโซล Firebase ให้เปิดส่วนการตรวจสอบสิทธิ์ ในแท็บวิธีการลงชื่อเข้าใช้ เปิดใช้ผู้ให้บริการ Apple ระบุรหัสบริการที่คุณสร้างไว้ในส่วนก่อนหน้า นอกจากนี้ ใน ส่วนการกำหนดค่าขั้นตอนของรหัส OAuth ให้ระบุรหัสทีม Apple และ คีย์ส่วนตัวและรหัสคีย์ที่คุณสร้างไว้ในส่วนก่อนหน้านี้

ปฏิบัติตามข้อกำหนดด้านข้อมูลที่ไม่ระบุตัวบุคคลของ Apple

ฟีเจอร์ลงชื่อเข้าใช้ด้วย Apple ช่วยให้ผู้ใช้เลือกลบข้อมูลระบุตัวบุคคลได้ รวมถึงอีเมลเมื่อลงชื่อเข้าใช้ ผู้ใช้ที่เลือกตัวเลือกนี้ มีที่อยู่อีเมลในโดเมน privaterelay.appleid.com วันและเวลา หากใช้ฟีเจอร์ลงชื่อเข้าใช้ด้วย Apple ในแอป คุณจะต้องปฏิบัติตาม นโยบายหรือข้อกำหนดสำหรับนักพัฒนาซอฟต์แวร์จาก Apple เกี่ยวกับ Apple ที่มีการลบข้อมูลระบุตัวบุคคลเหล่านี้ รหัส

ซึ่งรวมถึงการได้รับความยินยอมที่จำเป็นจากผู้ใช้ก่อนคุณ เชื่อมโยงข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้โดยตรงกับ Apple ที่มีการลบข้อมูลระบุตัวบุคคล ID เมื่อใช้การตรวจสอบสิทธิ์ Firebase อาจรวมถึงสิ่งต่อไปนี้ การดำเนินการ:

  • ลิงก์อีเมลกับ Apple ID ที่ไม่ระบุตัวตนหรือในทางกลับกัน
  • ลิงก์หมายเลขโทรศัพท์กับ Apple ID ที่ไม่ระบุตัวตนหรือในทางกลับกัน
  • ลิงก์ข้อมูลเข้าสู่ระบบโซเชียลที่ระบุตัวบุคคลไม่ได้ (Facebook, Google ฯลฯ) กับ Apple ID ที่ไม่ระบุตัวตนหรือในทางกลับกัน

รายการด้านบนเป็นเพียงตัวอย่างบางส่วนเท่านั้น เข้าร่วมโปรแกรมนักพัฒนาซอฟต์แวร์ของ Apple ข้อตกลงการอนุญาตให้ใช้สิทธิในส่วนการเป็นสมาชิกของบัญชีนักพัฒนาแอป ให้แอปของคุณเป็นไปตามข้อกำหนดของ Apple

จัดการขั้นตอนการลงชื่อเข้าใช้ด้วย Firebase SDK

สำหรับ Android วิธีที่ง่ายที่สุดในการตรวจสอบสิทธิ์ผู้ใช้ด้วย Firebase โดยใช้ บัญชี Apple ต้องจัดการขั้นตอนการลงชื่อเข้าใช้ทั้งหมดด้วย Firebase Android SDK

หากต้องการจัดการขั้นตอนการลงชื่อเข้าใช้ด้วย Firebase Android SDK ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างอินสแตนซ์ของ OAuthProvider โดยใช้ Builder ของ รหัสผู้ให้บริการ apple.com:

    Kotlin+KTX

    val provider = OAuthProvider.newBuilder("apple.com")
    

    Java

    OAuthProvider.Builder provider = OAuthProvider.newBuilder("apple.com");
    
  2. ไม่บังคับ: ระบุขอบเขต OAuth 2.0 เพิ่มเติมนอกเหนือจากค่าเริ่มต้นที่ ที่ต้องการขอจากผู้ให้บริการตรวจสอบสิทธิ์

    Kotlin+KTX

    provider.setScopes(arrayOf("email", "name"))
    

    Java

    List<String> scopes =
        new ArrayList<String>() {
          {
            add("email");
            add("name");
          }
        };
    provider.setScopes(scopes);
    

    โดยค่าเริ่มต้น เมื่อเปิดใช้บัญชี 1 บัญชีต่ออีเมล Firebase ส่งคำขอขอบเขตอีเมลและชื่อ หากคุณเปลี่ยนการตั้งค่านี้เป็นหลายรายการ บัญชีต่ออีเมล Firebase จะไม่ขอขอบเขตใดๆ จาก Apple เว้นแต่ว่าคุณจะระบุไว้

  3. ไม่บังคับ: หากต้องการแสดงหน้าจอลงชื่อเข้าใช้ของ Apple ในภาษา นอกเหนือจากภาษาอังกฤษ ให้ตั้งค่าพารามิเตอร์ locale โปรดดู ลงชื่อเข้าใช้ด้วยเอกสารของ Apple สำหรับภาษาที่รองรับ

    Kotlin+KTX

    // Localize the Apple authentication screen in French.
    provider.addCustomParameter("locale", "fr")
    

    Java

    // Localize the Apple authentication screen in French.
    provider.addCustomParameter("locale", "fr");
    
  4. ตรวจสอบสิทธิ์กับ Firebase โดยใช้ออบเจ็กต์ผู้ให้บริการ OAuth โปรดทราบว่าสิ่งที่ การดำเนินการอื่นๆ ของ FirebaseAuth การดําเนินการนี้จะควบคุม UI โดย เปิดแท็บ Chrome ที่กำหนดเอง ดังนั้น โปรดอย่าอ้างอิงกิจกรรมของคุณใน OnSuccessListener และ OnFailureListener ที่คุณแนบเพื่อจะ ออกทันทีเมื่อการทำงานเริ่มต้น UI

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

    หากต้องการตรวจสอบว่ามีผลลัพธ์ที่รอดำเนินการหรือไม่ โปรดโทรไปที่ getPendingAuthResult()

    Kotlin+KTX

    val pending = auth.pendingAuthResult
    if (pending != null) {
        pending.addOnSuccessListener { authResult ->
            Log.d(TAG, "checkPending:onSuccess:$authResult")
            // Get the user profile with authResult.getUser() and
            // authResult.getAdditionalUserInfo(), and the ID
            // token from Apple with authResult.getCredential().
        }.addOnFailureListener { e ->
            Log.w(TAG, "checkPending:onFailure", e)
        }
    } else {
        Log.d(TAG, "pending: null")
    }
    

    Java

    mAuth = FirebaseAuth.getInstance();
    Task<AuthResult> pending = mAuth.getPendingAuthResult();
    if (pending != null) {
        pending.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
            @Override
            public void onSuccess(AuthResult authResult) {
                Log.d(TAG, "checkPending:onSuccess:" + authResult);
                // Get the user profile with authResult.getUser() and
                // authResult.getAdditionalUserInfo(), and the ID
                // token from Apple with authResult.getCredential().
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "checkPending:onFailure", e);
            }
        });
    } else {
        Log.d(TAG, "pending: null");
    }
    

    หากไม่มีผลลัพธ์ที่รอดำเนินการ ให้เริ่มขั้นตอนการลงชื่อเข้าใช้โดยการโทร startActivityForSignInWithProvider():

    Kotlin+KTX

    auth.startActivityForSignInWithProvider(this, provider.build())
            .addOnSuccessListener { authResult ->
                // Sign-in successful!
                Log.d(TAG, "activitySignIn:onSuccess:${authResult.user}")
                val user = authResult.user
                // ...
            }
            .addOnFailureListener { e ->
                Log.w(TAG, "activitySignIn:onFailure", e)
            }
    

    Java

    mAuth.startActivityForSignInWithProvider(this, provider.build())
            .addOnSuccessListener(
                    new OnSuccessListener<AuthResult>() {
                        @Override
                        public void onSuccess(AuthResult authResult) {
                            // Sign-in successful!
                            Log.d(TAG, "activitySignIn:onSuccess:" + authResult.getUser());
                            FirebaseUser user = authResult.getUser();
                            // ...
                        }
                    })
            .addOnFailureListener(
                    new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Log.w(TAG, "activitySignIn:onFailure", e);
                        }
                    });
    

    Apple ไม่เหมือนกับผู้ให้บริการรายอื่นๆ ที่ Firebase Auth รองรับ URL ของภาพถ่าย

    นอกจากนี้ เมื่อผู้ใช้เลือกที่จะไม่แชร์อีเมลกับแอป Apple ให้ที่อยู่อีเมลที่ไม่ซ้ำกันสำหรับผู้ใช้ดังกล่าว (ในแบบฟอร์ม xyz@privaterelay.appleid.com) ซึ่งแชร์กับแอปของคุณ หากคุณ กำหนดค่าบริการส่งต่ออีเมลส่วนตัวแล้ว Apple จะส่งต่ออีเมลที่ส่งไปยัง กับอีเมลจริงของผู้ใช้

    Apple จะแชร์เฉพาะข้อมูลผู้ใช้ เช่น ชื่อที่แสดงกับแอป ครั้งแรกที่ผู้ใช้ลงชื่อเข้าใช้ โดยทั่วไป Firebase จะจัดเก็บชื่อที่แสดง ครั้งแรกที่ผู้ใช้ลงชื่อเข้าใช้ด้วย Apple ซึ่งคุณจะใช้ getCurrentUser().getDisplayName(). อย่างไรก็ตาม หากก่อนหน้านี้คุณใช้ Apple ในการลงชื่อเข้าใช้แอป เมื่อใช้ Firebase Apple จะไม่ให้บริการ Firebase กับจอแสดงผลของผู้ใช้ ชื่อ

การตรวจสอบสิทธิ์ซ้ำและการลิงก์บัญชี

ใช้รูปแบบเดียวกันนี้กับ startActivityForReauthenticateWithProvider() ได้ ซึ่งคุณสามารถใช้เพื่อเรียกข้อมูลเข้าสู่ระบบใหม่สำหรับการดำเนินการที่มีความละเอียดอ่อน ซึ่ง กำหนดให้มีการลงชื่อเข้าใช้ล่าสุด:

Kotlin+KTX

// The user is already signed-in.
val firebaseUser = auth.getCurrentUser()

firebaseUser
    .startActivityForReauthenticateWithProvider(/* activity= */ this, provider.build())
    .addOnSuccessListener( authResult -> {
        // User is re-authenticated with fresh tokens and
        // should be able to perform sensitive operations
        // like account deletion and email or password
        // update.
    })
    .addOnFailureListener( e -> {
        // Handle failure.
    })

Java

// The user is already signed-in.
FirebaseUser firebaseUser = mAuth.getCurrentUser();

firebaseUser
    .startActivityForReauthenticateWithProvider(/* activity= */ this, provider.build())
    .addOnSuccessListener(
        new OnSuccessListener<AuthResult>() {
          @Override
          public void onSuccess(AuthResult authResult) {
            // User is re-authenticated with fresh tokens and
            // should be able to perform sensitive operations
            // like account deletion and email or password
            // update.
          }
        })
    .addOnFailureListener(
        new OnFailureListener() {
          @Override
          public void onFailure(@NonNull Exception e) {
            // Handle failure.
          }
        });

และคุณจะใช้ linkWithCredential() เพื่อลิงก์ผู้ให้บริการข้อมูลประจำตัวรายต่างๆ กับ บัญชีที่มีอยู่

โปรดทราบว่า Apple กำหนดให้คุณขอความยินยอมที่ชัดแจ้งจากผู้ใช้ก่อนลิงก์ บัญชี Apple ของตนกับข้อมูลอื่นๆ

เช่น หากต้องการลิงก์บัญชี Facebook กับบัญชี Firebase ปัจจุบัน ให้ใช้เมธอด โทเค็นเพื่อการเข้าถึงที่คุณได้รับจากการลงชื่อเข้าใช้ Facebook ของผู้ใช้:

Kotlin+KTX

// Initialize a Facebook credential with a Facebook access token.
val credential = FacebookAuthProvider.getCredential(token.getToken())

// Assuming the current user is an Apple user linking a Facebook provider.
mAuth.getCurrentUser().linkWithCredential(credential)
    .addOnCompleteListener(this, task -> {
        if (task.isSuccessful()) {
          // Facebook credential is linked to the current Apple user.
          // The user can now sign in to the same account
          // with either Apple or Facebook.
        }
      });

Java

// Initialize a Facebook credential with a Facebook access token.
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

// Assuming the current user is an Apple user linking a Facebook provider.
mAuth.getCurrentUser().linkWithCredential(credential)
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
      @Override
      public void onComplete(@NonNull Task<AuthResult> task) {
        if (task.isSuccessful()) {
          // Facebook credential is linked to the current Apple user.
          // The user can now sign in to the same account
          // with either Apple or Facebook.
        }
      }
    });

ขั้นสูง: จัดการขั้นตอนการลงชื่อเข้าใช้ด้วยตนเอง

คุณยังตรวจสอบสิทธิ์กับ Firebase โดยใช้บัญชี Apple ได้ด้วยการจัดการ ขั้นตอนการลงชื่อเข้าใช้โดยใช้ Apple Sign-In JS SDK เพื่อสร้าง ขั้นตอน OAuth หรือใช้ไลบรารี OAuth เช่น AppAuth

  1. สร้างสตริงแบบสุ่มให้กับคำขอลงชื่อเข้าใช้ทุกรายการ "nonce" ซึ่งคุณจะใช้เพื่อตรวจสอบว่าโทเค็นรหัสที่ได้มา ที่ได้รับ ซึ่งเป็นการตอบสนองต่อคำขอการตรวจสอบสิทธิ์ของแอปโดยเฉพาะ ช่วงเวลานี้ เป็นสิ่งสำคัญในการป้องกันการโจมตีซ้ำ

    คุณสามารถสร้าง Nonce ที่เข้ารหัสแบบเข้ารหัสใน Android ได้ด้วย SecureRandom ตามตัวอย่างต่อไปนี้

    Kotlin+KTX

    private fun generateNonce(length: Int): String {
        val generator = SecureRandom()
    
        val charsetDecoder = StandardCharsets.US_ASCII.newDecoder()
        charsetDecoder.onUnmappableCharacter(CodingErrorAction.IGNORE)
        charsetDecoder.onMalformedInput(CodingErrorAction.IGNORE)
    
        val bytes = ByteArray(length)
        val inBuffer = ByteBuffer.wrap(bytes)
        val outBuffer = CharBuffer.allocate(length)
        while (outBuffer.hasRemaining()) {
            generator.nextBytes(bytes)
            inBuffer.rewind()
            charsetDecoder.reset()
            charsetDecoder.decode(inBuffer, outBuffer, false)
        }
        outBuffer.flip()
        return outBuffer.toString()
    }
    

    Java

    private String generateNonce(int length) {
        SecureRandom generator = new SecureRandom();
    
        CharsetDecoder charsetDecoder = StandardCharsets.US_ASCII.newDecoder();
        charsetDecoder.onUnmappableCharacter(CodingErrorAction.IGNORE);
        charsetDecoder.onMalformedInput(CodingErrorAction.IGNORE);
    
        byte[] bytes = new byte[length];
        ByteBuffer inBuffer = ByteBuffer.wrap(bytes);
        CharBuffer outBuffer = CharBuffer.allocate(length);
        while (outBuffer.hasRemaining()) {
            generator.nextBytes(bytes);
            inBuffer.rewind();
            charsetDecoder.reset();
            charsetDecoder.decode(inBuffer, outBuffer, false);
        }
        outBuffer.flip();
        return outBuffer.toString();
    }
    

    จากนั้นรับแฮช SHA246 ของ Nonce เป็นสตริงเลขฐาน 16 ดังนี้

    Kotlin+KTX

    private fun sha256(s: String): String {
        val md = MessageDigest.getInstance("SHA-256")
        val digest = md.digest(s.toByteArray())
        val hash = StringBuilder()
        for (c in digest) {
            hash.append(String.format("%02x", c))
        }
        return hash.toString()
    }
    

    Java

    private String sha256(String s) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        byte[] digest = md.digest(s.getBytes());
        StringBuilder hash = new StringBuilder();
        for (byte c: digest) {
            hash.append(String.format("%02x", c));
        }
        return hash.toString();
    }
    

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

  2. เริ่มขั้นตอนการลงชื่อเข้าใช้ของ Apple โดยใช้ไลบรารี OAuth หรือวิธีอื่นๆ เป็น อย่าลืมใส่ Nonce ที่แฮชเป็นพารามิเตอร์ในคำขอ

  3. หลังจากที่คุณได้รับการตอบกลับของ Apple แล้ว ให้รับโทเค็นรหัสจากการตอบกลับและ ให้ใช้ค่าดังกล่าวและค่าที่ได้จากการแฮชที่ไม่ได้แฮชเพื่อสร้าง AuthCredential:

    Kotlin+KTX

    val credential =  OAuthProvider.newCredentialBuilder("apple.com")
        .setIdTokenWithRawNonce(appleIdToken, rawUnhashedNonce)
        .build()
    

    Java

    AuthCredential credential =  OAuthProvider.newCredentialBuilder("apple.com")
        .setIdTokenWithRawNonce(appleIdToken, rawUnhashedNonce)
        .build();
    
  4. ตรวจสอบสิทธิ์ด้วย Firebase โดยใช้ข้อมูลเข้าสู่ระบบ Firebase ดังนี้

    Kotlin+KTX

    auth.signInWithCredential(credential)
          .addOnCompleteListener(this) { task ->
              if (task.isSuccessful) {
                // User successfully signed in with Apple ID token.
                // ...
              }
          }
    

    Java

    mAuth.signInWithCredential(credential)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
          @Override
          public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
              // User successfully signed in with Apple ID token.
              // ...
            }
          }
        });
    

หากโทรหา signInWithCredential สำเร็จ คุณสามารถใช้ getCurrentUser ได้ วิธีการดึงข้อมูลบัญชีของผู้ใช้

การเพิกถอนโทเค็น

Apple กําหนดให้แอปที่รองรับการสร้างบัญชีต้องอนุญาตให้ผู้ใช้เริ่มต้น การลบบัญชีของผู้ใช้ภายในแอปตามที่อธิบายไว้ในรีวิวของ App Store หลักเกณฑ์

นอกจากนี้ แอปที่รองรับการลงชื่อเข้าใช้ด้วย Apple ควรใช้ฟีเจอร์ลงชื่อเข้าใช้ด้วย Apple REST API เพื่อเพิกถอนโทเค็นของผู้ใช้

โปรดทำตามขั้นตอนต่อไปนี้เพื่อให้เป็นไปตามข้อกำหนดนี้

  1. ใช้เมธอด startActivityForSignInWithProvider() เพื่อลงชื่อเข้าใช้ด้วย Apple และรับ AuthResult

  2. รับโทเค็นเพื่อการเข้าถึงสำหรับผู้ให้บริการ Apple

    Kotlin+KTX

    val oauthCredential: OAuthCredential =  authResult.credential
    val accessToken = oauthCredential.accessToken
    

    Java

    OAuthCredential oauthCredential = (OAuthCredential) authResult.getCredential();
    String accessToken = oauthCredential.getAccessToken();
    
  3. เพิกถอนโทเค็นโดยใช้ revokeAccessToken API

    Kotlin+KTX

    mAuth.revokeAccessToken(accessToken)
      .addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
          // Access token successfully revoked
          // for the user ...
        }
    }
    

    Java

    mAuth.revokeAccessToken(accessToken)
        .addOnCompleteListener(this, new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
              if (task.isSuccessful()) {
                // Access token successfully revoked
                // for the user ...
              }
            }
      });
    
  1. สุดท้าย ลบบัญชีผู้ใช้ (และ ข้อมูลที่เกี่ยวข้อง)

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

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

    • ในแอป คุณสามารถดูข้อมูลโปรไฟล์พื้นฐานของผู้ใช้ได้จาก FirebaseUser โปรดดู จัดการผู้ใช้

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

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

    หากต้องการนำผู้ใช้ออกจากระบบ โปรดโทร signOut

    Kotlin+KTX

    Firebase.auth.signOut()

    Java

    FirebaseAuth.getInstance().signOut();