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

รับรองความถูกต้องโดยใช้ Twitter บน iOS

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

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

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

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

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

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

  1. เพิ่มรูปแบบ URL ที่กำหนดเองในโครงการ Xcode ของคุณ:

    1. เปิดการกำหนดค่าโครงการของคุณ: คลิกสองครั้งที่ชื่อโครงการในมุมมองแบบต้นไม้ด้านซ้าย เลือกแอปของคุณจากส่วนเป้าหมายจากนั้นเลือกแท็บข้อมูลและขยายส่วนประเภท URL
    2. คลิกปุ่ม + และเพิ่มรูปแบบ URL สำหรับรหัสไคลเอ็นต์ที่กลับรายการของคุณ หากต้องการค้นหาค่านี้ให้เปิดไฟล์การกำหนดค่า GoogleService-Info.plist และมองหาคีย์ REVERSED_CLIENT_ID คัดลอกค่าของคีย์นั้นและวางลงในกล่อง URL Schemes ในหน้าการกำหนดค่า เว้นช่องอื่นว่างไว้

      เมื่อเสร็จสิ้นการกำหนดค่าของคุณควรมีลักษณะคล้ายกับสิ่งต่อไปนี้ (แต่มีค่าเฉพาะแอปพลิเคชันของคุณ):

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

    รวดเร็ว

        var provider = OAuthProvider(providerID: "twitter.com")
        

    วัตถุประสงค์ -C

        FIROAuthProvider *provider = [FIROAuthProvider providerWithProviderID:@"twitter.com"];
        
  3. ทางเลือก : ระบุพารามิเตอร์ OAuth ที่กำหนดเองเพิ่มเติมที่คุณต้องการส่งพร้อมกับคำขอ OAuth

    รวดเร็ว

        provider.customParameters = [
          "lang": "fr"
          ]
        

    วัตถุประสงค์ -C

        [provider setCustomParameters:@{@"lang": @"fr"}];
        

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

  4. ทางเลือก : หากคุณต้องการปรับแต่งวิธีที่แอปของคุณนำเสนอ SFSafariViewController หรือ UIWebView เมื่อแสดง reCAPTCHA แก่ผู้ใช้ให้สร้างคลาสแบบกำหนดเองที่สอดคล้องกับโปรโตคอล FIRAuthUIDelegate และส่งต่อไปยัง getCredentialWithUIDelegate:completion:

  5. ตรวจสอบสิทธิ์กับ Firebase โดยใช้ออบเจ็กต์ผู้ให้บริการ OAuth

    รวดเร็ว

        provider.getCredentialWith(nil) { credential, error in
          if error != nil {
            // Handle error.
          }
          if credential != nil {
            Auth().signIn(with: credential) { authResult, error in
              if error != nil {
                // Handle error.
              }
              // User is signed in.
              // IdP data available in authResult.additionalUserInfo.profile.
              // Twitter OAuth access token can also be retrieved by:
              // authResult.credential.accessToken
              // Twitter OAuth ID token can be retrieved by calling:
              // authResult.credential.idToken
              // Twitter OAuth secret can be retrieved by calling:
              // authResult.credential.secret
            }
          }
        }
        

    วัตถุประสงค์ -C

        [provider getCredentialWithUIDelegate:nil
                                   completion:^(FIRAuthCredential *_Nullable credential, NSError *_Nullable error) {
          if (error) {
           // Handle error.
          }
          if (credential) {
            [[FIRAuth auth] signInWithCredential:credential
                                      completion:^(FIRAuthDataResult *_Nullable authResult, NSError *_Nullable error) {
              if (error) {
                // Handle error.
              }
              // User is signed in.
              // IdP data available in authResult.additionalUserInfo.profile.
              // Twitter OAuth access token can also be retrieved by:
              // authResult.credential.accessToken
              // Twitter OAuth ID token can be retrieved by calling:
              // authResult.credential.idToken
              // Twitter OAuth secret can be retrieved by calling:
              // authResult.credential.secret
            }];
          }
        }];
        

    เมื่อใช้โทเค็นการเข้าถึง OAuth คุณสามารถเรียกใช้ Twitter API

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

    https://api.twitter.com/labs/1/users?usernames=TwitterDev
    
  6. แม้ว่าตัวอย่างข้างต้นจะเน้นไปที่ขั้นตอนการลงชื่อเข้าใช้ แต่คุณยังสามารถเชื่อมโยงผู้ให้บริการ Twitter กับผู้ใช้ที่มีอยู่ได้ ตัวอย่างเช่นคุณสามารถเชื่อมโยงผู้ให้บริการหลายรายกับผู้ใช้รายเดียวกันเพื่อให้สามารถลงชื่อเข้าใช้ได้

    รวดเร็ว

        Auth().currentUser.link(withCredential: credential) { authResult, error in
          if error != nil {
            // Handle error.
          }
          // Twitter credential is linked to the current user.
          // IdP data available in authResult.additionalUserInfo.profile.
          // Twitter OAuth access token can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }
        

    วัตถุประสงค์ -C

        [[FIRAuth auth].currentUser
            linkWithCredential:credential
                    completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
          if (error) {
            // Handle error.
          }
          // Twitter credential is linked to the current user.
          // IdP data available in authResult.additionalUserInfo.profile.
          // Twitter OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }];
        
  7. สามารถใช้รูปแบบเดียวกันกับ reauthenticateWithCredential ซึ่งสามารถใช้เพื่อดึงข้อมูลประจำตัวใหม่สำหรับการดำเนินการที่ละเอียดอ่อนที่ต้องมีการล็อกอินล่าสุด

    รวดเร็ว

        Auth().currentUser.reauthenticateWithCredential(withCredential: credential) { authResult, error in
          if error != nil {
            // Handle error.
          }
          // User is re-authenticated with fresh tokens minted and
          // should be able to perform sensitive operations like account
          // deletion and email or password update.
          // IdP data available in result.additionalUserInfo.profile.
          // Additional OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }
        

    วัตถุประสงค์ -C

        [[FIRAuth auth].currentUser
            reauthenticateWithCredential:credential
                              completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
          if (error) {
            // Handle error.
          }
          // User is re-authenticated with fresh tokens minted and
          // should be able to perform sensitive operations like account
          // deletion and email or password update.
          // IdP data available in result.additionalUserInfo.profile.
          // Additional OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }];
        

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

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

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

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

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

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

รวดเร็ว

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print ("Error signing out: %@", signOutError)
}
  

วัตถุประสงค์ -C

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

คุณอาจต้องการเพิ่มรหัสการจัดการข้อผิดพลาดสำหรับข้อผิดพลาดในการตรวจสอบสิทธิ์ทั้งหมด ดู จัดการข้อผิดพลาด