ลงชื่อเข้าใช้ด้วย Apple - นำไปใช้ในแอปของคุณ!

เผยแพร่แล้ว: 2020-01-14

ลงชื่อเข้าใช้ด้วย Apple ซึ่งเป็นคุณสมบัติใหม่ที่นำเสนอโดย Apple ที่ WWDC เมื่อปีที่แล้ว พร้อมใช้งานแล้วจาก iOS 13 ฟีเจอร์นี้นำเสนอการลงทะเบียนบัญชีที่ง่ายและปลอดภัยและการเข้าสู่ระบบในแอปพลิเคชันหรือเว็บไซต์ แทนที่จะกรอกแบบฟอร์มลงทะเบียนหรือเข้าสู่ระบบผ่านโซเชียลมีเดีย ตอนนี้คุณสามารถสร้างบัญชีและเข้าสู่ระบบด้วย Apple ID ของคุณและยืนยันด้วย Face ID, Touch ID หรือรหัสผ่าน

คำอธิบายสั้น ๆ ของการลงชื่อเข้าใช้ด้วย Apple:

  • ตั้งค่าบัญชีและลงชื่อเข้าใช้ได้ง่าย รวดเร็ว
  • ที่อยู่อีเมลที่ยืนยันแล้ว
  • ความปลอดภัยในตัว
  • ต่อต้านการฉ้อโกง
  • ข้ามแพลตฟอร์ม ️
  • iOS 13+

ในบทความนี้ ผมจะเน้นที่การ ใช้งานพื้นฐานของการลงชื่อเข้าใช้ด้วย Apple บนอุปกรณ์ iOS โดยไม่ต้องผสานกับเวอร์ชันเว็บหรือการผสานรวมกับส่วนหลัง

ฟีเจอร์ “ลงชื่อเข้าใช้ด้วย Apple” ทำงานอย่างไร

ลงชื่อเข้าใช้ด้วย Apple - อินเทอร์เฟซ

หลังจากแตะ "ลงชื่อเข้าใช้ด้วย Apple" หรือ "ดำเนินการต่อด้วย Apple" (ขึ้นอยู่กับว่าปุ่มใดถูกเลือกใช้ในแอปพลิเคชัน) หน้าต่างข้อมูลจะปรากฏขึ้นพร้อมความเป็นไปได้ของโซลูชันนี้ (ภาพหน้าจอที่สอง) จากนั้นหลังจากแตะ "ดำเนินการต่อ" เราได้รับข้อมูลว่าข้อมูลใดบ้างที่จะแชร์กับเจ้าของแอปพลิเคชัน

เรามีสองตัวเลือกในการลงทะเบียนบัญชีในแอปพลิเคชันโดยใช้ Sign In With Apple:

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

หลังจากเลือกตัวเลือกใดตัวเลือกหนึ่งแล้วแตะ "ดำเนินการต่อ" เราจะตรวจสอบ Apple ID ของเราในกรณีของการปลดล็อกโทรศัพท์ เช่น ด้วย Face ID, Touch ID หรือโดยการป้อนรหัสผ่าน ณ จุดนี้ควรสร้างบัญชีในแอปพลิเคชัน / เว็บไซต์ด้วยตัวระบุเฉพาะสำหรับผู้ใช้

เมื่อคุณเคยใช้ในแอปพลิเคชัน “ลงชื่อเข้าใช้ด้วย Apple” มาก่อน คุณสามารถดูตัวอย่างรายละเอียดของวิธีการเข้าสู่ระบบในการตั้งค่านี้และหยุดใช้คุณสมบัตินี้ ในการดำเนินการนี้ ให้ไปที่การตั้งค่า > Apple ID > รหัสผ่านและความปลอดภัย > แอปที่ใช้ Apple ID ของคุณ > เลือกแอป


จะใช้งาน “ลงชื่อเข้าใช้ด้วย Apple” ได้อย่างไร

หลังจากอ่านส่วนทฤษฎีของ “Sign In With Apple” แล้ว เราก็ดำเนินการได้ต่อ

ลงชื่อเข้าใช้ด้วย Apple - ขั้นตอนแรกของการใช้งาน

ก่อนอื่น คุณต้องเปิด "การลงชื่อเข้าใช้และความสามารถ" ในโครงการของคุณ จากนั้นกด + และเพิ่มความสามารถ "ลงชื่อเข้าใช้ด้วย Apple"

ลงชื่อเข้าใช้ด้วย Apple - ขั้นตอนการใช้งานทีละขั้นตอน

Apple ในคำปราศรัยของ WWDC แบ่งขั้นตอนการใช้งานคุณลักษณะนี้ออกเป็นสี่ขั้นตอน ทุกขั้นตอนอธิบายไว้ด้านล่าง

1. ปุ่ม

ในตอนเริ่มต้นเราต้องเพิ่มปุ่มไปที่หน้าจอของเรา ต้องเป็นปุ่ม ASAuthorizationAppleIDButton จากกรอบงาน AuthenticationService มีให้เลือกสองสี (ขาวและดำ) โดยมีชื่อเรื่องต่างกัน ไปที่ปุ่ม เราต้องเพิ่มการกระทำที่จะเรียกใช้หลังจากแตะแล้ว ฉันอธิบายการดำเนินการอนุญาตในจุดที่สอง

 นำเข้า AuthenticationServices

ปุ่มให้ = ASAuthorizationAppleIDButton (ประเภท: .signIn, สไตล์: .white)
button.addTarget(ตัวเอง การกระทำ: #selector(appleIdButtonClicked) สำหรับ: .touchUpInside)
stackView.addArrangedSubview (ปุ่ม)

2. การอนุญาต ️

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

 @objc func appleIdButtonClicked () {
    ให้คำขอ = ASAuthorizationAppleIDProvider().createRequest()
    request.requestedScopes = [.fullName, .email]

    ให้คอนโทรลเลอร์ = ASAuthorizationController (อนุญาตคำขอ: [คำขอ])
    controller.delegate = ตัวเอง
    controller.presentationContextProvider = ตนเอง
    controller.performRequests()
}

3. การยืนยัน

หลังจากตรวจสอบอย่างรวดเร็วด้วย Face ID, Touch ID หรือรหัสผ่าน ผลการอนุญาตจะถูกส่งกลับ เมื่อการอนุญาตสำเร็จ เมธอด didCompleteWithAuthorization จะส่งคืนอ็อบเจ็กต์ประเภท AppleIdCredential จากนั้นคุณต้องตรวจสอบว่าเป็นข้อมูลประจำตัวของประเภท ASAuthorizationAppleIdCredential หรือไม่ ถ้าใช่ เราจะพบข้อมูลที่จำเป็นทั้งหมดในการตั้งค่าบัญชีในระบบของเราในวัตถุนี้ เช่น ID ผู้ใช้ที่ไม่ซ้ำกัน ชื่อเต็ม และที่อยู่อีเมล (ซึ่ง ผู้ใช้ได้ขอก่อนหน้านี้) ณ จุดนี้ เราสามารถดำเนินการสร้างบัญชีในระบบของเราได้โดยการให้ข้อมูลที่จำเป็นเท่านั้น หากเกิดข้อผิดพลาด ข้อผิดพลาดนั้นจะถูกส่งคืนในเมธอด didCompleteWithError ซึ่งเราสามารถจัดการกับข้อผิดพลาดนี้ได้

 func authorizationController (ตัวควบคุม: ASAuthorizationController, didCompleteWithAuthorization การอนุญาต: ASAuthorization) {
    ถ้าให้ appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
        // สร้างบัญชีในระบบของคุณ
    } else ถ้าให้ passwordCredential = authorization.credential as? ASPasswordCredential {
        // ลงชื่อเข้าใช้โดยใช้ข้อมูลประจำตัว iCloud Keychain ที่มีอยู่
    }
}

func authorizationController (ตัวควบคุม: ASAuthorizationController, ข้อผิดพลาด didCompleteWithError: ข้อผิดพลาด) {
    พิมพ์ (ผิดพลาด)
}

4. การจัดการการเปลี่ยนแปลง

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

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

  • authorized — ผู้ใช้ที่ได้รับอนุญาตซึ่งสามารถใช้แอปพลิเคชันต่อไปได้
  • revoked — ออกจากระบบผู้ใช้และคุณสามารถเลือกนำเขาไปที่หน้าจอเข้าสู่ระบบเพื่อเข้าสู่ระบบอีกครั้ง
  • notFound — หมายความว่าผู้ใช้ไม่เคยใช้ “ลงชื่อเข้าใช้ด้วย Apple” ณ จุดนี้ แสดงหน้าจอเข้าสู่ระบบให้ผู้ใช้เห็นด้วย

การเรียกใช้เมธอด getCredentialState ควรอยู่ใน AppDelegate ใน didFinishLaunchingWithOptions

นอกจากนี้ Apple ยังจัดให้มีการแจ้งเตือน ซึ่งจะแจ้งเมื่อมีการเพิกถอนข้อมูลประจำตัว จากนั้นเราต้องจัดการกับสถานะดังกล่าวในลักษณะที่กล่าวถึงข้างต้น

 appleIDProvider.getCredentialState (forUserID: userId) { credentialState เกิดข้อผิดพลาด
    สลับ credentialState {
    กรณี .ได้รับอนุญาต:
        // ข้อมูลรับรอง Apple ID ถูกต้อง
    กรณี .เพิกถอน:
        // ข้อมูลประจำตัว Apple ID ถูกเพิกถอน ออกจากระบบ
    กรณี .notFound:
        // ไม่พบข้อมูลรับรอง โปรดแสดง UI การลงชื่อเข้าใช้
    ค่าเริ่มต้น:
        หยุดพัก
    }
}

// ลงทะเบียนเพื่อรับแจ้งการเพิกถอน
NotificationCenter.default.addObserver (สำหรับชื่อ: NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked, 
                                       วัตถุ: ไม่มี,
                                       คิว: ไม่มี) { _ in
    // ออกจากระบบผู้ใช้ หรือแนะนำให้ลงชื่อเข้าใช้อีกครั้ง
}

หลังจากใช้ทั้งสี่ขั้นตอนในแอปพลิเคชันตัวอย่างของฉัน ทุกอย่างทำงานได้และดูเหมือนว่า:

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

ฉันต้องเพิ่ม “ลงชื่อเข้าใช้ด้วย Apple” ในแอปของฉันหรือไม่

หากแอปพลิเคชันของคุณใช้วิธีเข้าสู่ระบบของบุคคลที่สาม เช่น Facebook, Google หรือ LinkedIn คุณต้องเพิ่มการลงชื่อเข้าใช้ด้วย Apple ตามแนวทางใหม่ด้วย ถ้าคุณไม่เพิ่ม ใบสมัครของคุณอาจถูกปฏิเสธและอาจไม่ได้รับการตรวจสอบโดย Apple ด้านล่างนี้เป็นลิงค์ไปยังข่าวและใบเสนอราคาจากแนวทางปฏิบัติ

แนวทางใหม่สำหรับลงชื่อเข้าใช้ด้วย Apple— 12 กันยายน 2019 ️

เริ่มตั้งแต่วันนี้ แอพใหม่ที่ส่งไปยัง App Store จะต้องปฏิบัติตามหลักเกณฑ์เหล่านี้ แอปที่มีอยู่และการอัปเดตแอปต้องติดตามภายในเดือนเมษายน 2020


ด้านล่างนี้เป็นแอปพลิเคชั่นที่เสนอการเข้าสู่ระบบโดยใช้คุณสมบัติใหม่ของ Apple แน่นอนว่ามีมากขึ้นทุกวัน

ตัวอย่างแอพที่ใช้คุณสมบัติลงชื่อเข้าใช้ด้วย Apple

คุณสามารถตรวจสอบโครงการทั้งหมดบน GitHub ของฉันได้ที่นี่

ที่มา:

  • https://developer.apple.com/videos/play/wwdc2019/706/
  • https://developer.apple.com/videos/play/wwdc2019/516
  • https://developer.apple.com/sign-in-with-apple/get-started/
  • https://developer.apple.com/news/?id=09122019b
  • https://developer.apple.com/app-store/review/guidelines/#sign-in-with-apple