Google มุ่งมั่นที่จะพัฒนาความเท่าเทียมทางเชื้อชาติสำหรับชุมชนคนผิวดำ มาดูกันว่า
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

ตรวจสอบสิทธิ์การใช้ Twitter บน Android

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

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

หากต้องการลงชื่อเข้าใช้โดยใช้บัญชี Twitter คุณต้องเปิดใช้งาน Twitter เป็นผู้ให้บริการลงชื่อเข้าใช้สำหรับโครงการ Firebase ของคุณ:

  1. หากคุณยังไม่ได้ เพิ่ม Firebase ให้กับโครงการ Android ของคุณ

  2. ใน คอนโซล Firebase ให้เปิดส่วน Auth
  3. บนแท็บ วิธีลงชื่อเข้า ใช้ให้เปิดใช้งานผู้ให้บริการ Twitter
  4. เพิ่ม คีย์ API และ ความลับ API จากคอนโซลนักพัฒนาซอฟต์แวร์ของผู้ให้บริการไปยังการกำหนดค่าผู้ให้บริการ:
    1. ลงทะเบียนแอปของคุณ เป็นแอพพลิเคชั่นสำหรับนักพัฒนาบน Twitter และรับรหัส OAuth API และ API ลับ ของแอป
    2. ตรวจสอบให้แน่ใจว่า Firebase OAuth เปลี่ยนเส้นทาง URI (เช่น my-app-12345.firebaseapp.com/__/auth/handler ) ของคุณ ได้รับการ ตั้งค่าเป็น URL การเรียกกลับ ของการ อนุญาต ในหน้าการตั้งค่าแอพในการตั้งค่า แอพ Twitter ของ คุณ
  5. คลิก บันทึก
  6. ในโครงการระดับ build.gradle ไฟล์ให้แน่ใจว่าจะรวมถึงพื้นที่เก็บข้อมูล Maven ของ Google ในทั้งสองของคุณ buildscript และ allprojects ส่วน

  7. เพิ่มการพึ่งพาสำหรับไลบรารี Android การรับรองความถูกต้อง Firebase ให้กับโมดูล Gradle ของคุณ (ระดับแอป) ไฟล์ (มักจะเป็น app/build.gradle ):

     implementation 'com.google.firebase:firebase-auth:19.3.2'
     
  8. หากคุณยังไม่ได้ระบุลายนิ้วมือ SHA-1 ของแอปให้ทำจาก หน้าการตั้งค่า ของคอนโซล Firebase ดูที่การ ตรวจสอบสิทธิ์ไคลเอ็นต์ของคุณ สำหรับรายละเอียดวิธีรับลายนิ้วมือ SHA-1 ของแอป

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

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

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

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

     OAuthProvider.Builder provider = OAuthProvider.newBuilder("twitter.com");
     
  2. ทางเลือก : ระบุพารามิเตอร์ OAuth ที่กำหนดเองเพิ่มเติมที่คุณต้องการส่งพร้อมกับคำขอ OAuth

     // Target specific email with login hint.
    provider.addCustomParameter("lang", "fr");
     

    สำหรับพารามิเตอร์ที่ Twitter รองรับโปรดดู เอกสาร ของ Twitter OAuth โปรดทราบว่าคุณไม่สามารถส่งผ่านพารามิเตอร์ที่จำเป็นสำหรับ Firebase ด้วย setCustomParameters() พารามิเตอร์เหล่านี้คือ client_id , response_type , redirect_uri , state , scope และ response_mode

  3. รับรองความถูกต้องกับ Firebase โดยใช้วัตถุผู้ให้บริการ OAuth โปรดทราบว่าการดำเนินการ FirebaseAuth ไม่เหมือนกับการดำเนินการอื่น ๆ ของ FirebaseAuth ซึ่งจะควบคุม UI ของคุณโดยการเปิด แท็บ Chrome ที่กำหนดเอง ขึ้นมา ดังนั้นอย่าอ้างอิงกิจกรรมของคุณใน OnSuccessListener และ OnFailureListener ที่คุณแนบเนื่องจากจะแยกออกทันทีเมื่อการดำเนินการเริ่มต้น UI

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

    ในการตรวจสอบว่ามีผลลัพธ์ที่ค้างอยู่หรือไม่โทรหา getPendingAuthResult :

     Task<AuthResult> pendingResultTask = firebaseAuth.getPendingAuthResult();
    if (pendingResultTask != null) {
      // There's something already here! Finish the sign-in for your user.
      pendingResultTask
          .addOnSuccessListener(
              new OnSuccessListener<AuthResult>() {
                @Override
                public void onSuccess(AuthResult authResult) {
                  // User is signed in.
                  // IdP data available in
                  // authResult.getAdditionalUserInfo().getProfile().
                  // The OAuth access token can also be retrieved:
                  // authResult.getCredential().getAccessToken().
                  // The OAuth secret can be retrieved by calling:
                  // authResult.getCredential().getSecret().
                }
              })
          .addOnFailureListener(
              new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                  // Handle failure.
                }
              });
    } else {
      // There's no pending result so you need to start the sign-in flow.
      // See below.
    }
     

    หากต้องการเริ่มโฟลว์การลงชื่อเข้าใช้ให้เรียก startActivityForSignInWithProvider :

     firebaseAuth
        .startActivityForSignInWithProvider(/* activity= */ this, provider.build())
        .addOnSuccessListener(
            new OnSuccessListener<AuthResult>() {
              @Override
              public void onSuccess(AuthResult authResult) {
                // User is signed in.
                // IdP data available in
                // authResult.getAdditionalUserInfo().getProfile().
                // The OAuth access token can also be retrieved:
                // authResult.getCredential().getAccessToken().
                // The OAuth secret can be retrieved by calling:
                // authResult.getCredential().getSecret().
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
     

    เมื่อเสร็จสิ้นการสำเร็จโทเค็นการเข้าถึง OAuth ที่เชื่อมโยงกับผู้ให้บริการสามารถดึงข้อมูลจากวัตถุ OAuthCredential ส่งคืน

    การใช้โทเค็นการเข้าถึง OAuth คุณสามารถโทรหา Twitter API ได้

    ตัวอย่างเช่นหากต้องการรับข้อมูลโปรไฟล์พื้นฐานคุณสามารถโทรหา REST API ผ่านโทเค็นการเข้าถึงในส่วนหัวการ Authorization :

  4. ในขณะที่ตัวอย่างข้างต้นมุ่งเน้นไปที่ขั้นตอนการลงชื่อเข้าใช้คุณยังมีความสามารถในการเชื่อมโยงผู้ให้บริการ Twitter กับผู้ใช้ที่มีอยู่โดยใช้ startActivityForLinkWithProvider ตัวอย่างเช่นคุณสามารถเชื่อมโยงผู้ให้บริการหลายรายกับผู้ใช้เดียวกันทำให้ผู้ใช้ลงชื่อเข้าใช้ด้วย

     // The user is already signed-in.
    FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
    
    firebaseUser
        .startActivityForLinkWithProvider(/* activity= */ this, provider.build())
        .addOnSuccessListener(
            new OnSuccessListener<AuthResult>() {
              @Override
              public void onSuccess(AuthResult authResult) {
                // Twitter credential is linked to the current user.
                // IdP data available in
                // authResult.getAdditionalUserInfo().getProfile().
                // The OAuth access token can also be retrieved:
                // authResult.getCredential().getAccessToken().
                // The OAuth secret can be retrieved by calling:
                // authResult.getCredential().getSecret().
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
    
     
  5. รูปแบบเดียวกันสามารถใช้กับ startActivityForReauthenticateWithProvider ซึ่งสามารถใช้เพื่อดึงข้อมูลประจำตัวใหม่สำหรับการดำเนินการที่สำคัญที่ต้องลงชื่อเข้าใช้ล่าสุด

     // The user is already signed-in.
    FirebaseUser firebaseUser = firebaseAuth.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.
              }
            });
     

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

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

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

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

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

ในการออกจากระบบผู้ใช้โทร signOut :

ชวา

FirebaseAuth.getInstance().signOut();

Kotlin + KTX

Firebase.auth.signOut()