ลงชื่อเข้าใช้ด้วย Apple — วิธีใช้งานในแอปของคุณ
เผยแพร่แล้ว: 2020-03-06หมายเหตุบรรณาธิการ: บทความนี้เผยแพร่ครั้งแรกบน Miquido.com เมื่อวันที่ 14 มกราคม 2020
ลงชื่อเข้าใช้ด้วย Apple ซึ่งเป็นคุณสมบัติใหม่ที่นำเสนอโดย Apple ที่ WWDC เมื่อปีที่แล้ว พร้อมใช้งานแล้วจาก iOS 13 ฟีเจอร์นี้นำเสนอการลงทะเบียนบัญชีที่ง่ายและปลอดภัย และการเข้าสู่ระบบในแอปพลิเคชันหรือเว็บไซต์ แทนที่จะกรอกแบบฟอร์มลงทะเบียนหรือเข้าสู่ระบบผ่านโซเชียลมีเดีย ตอนนี้คุณสามารถสร้างบัญชีและเข้าสู่ระบบด้วย Apple ID ของคุณและยืนยันด้วย Face ID, Touch ID หรือรหัสผ่าน
👨💻 คำอธิบายสั้น ๆ ของการลงชื่อเข้าใช้ด้วย Apple:
- ตั้งค่าบัญชีและลงชื่อเข้าใช้ได้ง่าย รวดเร็ว
- ที่อยู่อีเมลที่ยืนยันแล้ว
- ความปลอดภัยในตัว
- ต่อต้านการฉ้อโกง
- ข้ามแพลตฟอร์ม 📱💻 ⌚️
- iOS 13+
ในบทความนี้ ผมจะเน้นที่การใช้งานพื้นฐานของการลงชื่อเข้าใช้ด้วย Apple บนอุปกรณ์ iOS โดยไม่ต้องผสานกับเวอร์ชันเว็บหรือการผสานรวมกับส่วนหลัง
มาเริ่มดูกันว่ามันทำงานอย่างไร
หลังจากแตะ "ลงชื่อเข้าใช้ด้วย Apple" หรือ "ดำเนินการต่อด้วย Apple" (ขึ้นอยู่กับว่าปุ่มใดถูกเลือกใช้ในแอปพลิเคชัน) หน้าต่างข้อมูลจะปรากฏขึ้นพร้อมความเป็นไปได้ของโซลูชันนี้ (ภาพหน้าจอที่สอง) จากนั้นหลังจากแตะ "ดำเนินการต่อ" เราได้รับข้อมูลเกี่ยวกับข้อมูลที่จะแชร์กับเจ้าของแอปพลิเคชัน
เรามีสองตัวเลือกในการลงทะเบียนบัญชีในแอปพลิเคชันโดยใช้ Sign In With Apple:
- ด้วยการแบ่งปันที่อยู่อีเมลของเรา ที่อยู่อีเมลจริงของคุณจะถูกแบ่งปันกับแอปพลิเคชันหรือเว็บไซต์
- ด้วยการซ่อนที่อยู่อีเมลของเรา อีเมลจริงของคุณจะไม่ถูกแชร์กับแอปพลิเคชันหรือเว็บไซต์ Apple จะสร้างอีเมลเฉพาะสำหรับคุณโดยใช้โดเมน @privaterelay.appleid.com ไม่ต้องกังวล อีเมลทั้งหมดจากเจ้าของแอปจะถูกส่งต่อไปยังกล่องจดหมายของคุณ เนื่องจากอีเมลจะถูกส่งต่อไปยังที่อยู่อีเมลจริงของเรา เจ้าของแอปจะทราบเฉพาะที่อยู่อีเมลที่สร้างด้วยโดเมน Apple
หลังจากเลือกตัวเลือกใดตัวเลือกหนึ่งแล้วแตะ "ดำเนินการต่อ" เราจะตรวจสอบ Apple ID ของเราเช่นในกรณีของการปลดล็อกโทรศัพท์ เช่น โดย Face ID, Touch ID หรือโดยการป้อนรหัสผ่าน ณ จุดนี้ ควรสร้างบัญชีในแอปพลิเคชัน/เว็บไซต์ด้วยตัวระบุเฉพาะสำหรับผู้ใช้
เมื่อคุณเคยใช้ในแอปพลิเคชัน "ลงชื่อเข้าใช้ด้วย Apple" มาก่อน คุณสามารถดูตัวอย่างรายละเอียดของวิธีการเข้าสู่ระบบในการตั้งค่านี้ และหยุดใช้คุณสมบัตินี้ ในการดำเนินการนี้ ให้ไปที่ การตั้งค่า > Apple ID > รหัสผ่านและความปลอดภัย > แอปที่ใช้ Apple ID ของคุณ > เลือกแอป
หลังจากอ่านส่วนทฤษฎีของ “Sign In With Apple” แล้ว เราก็ดำเนินการนำไปปฏิบัติ ได้ 👨💻
ก่อนอื่น คุณต้องเปิด "การลงชื่อเข้าใช้และความสามารถ" ในโครงการของคุณ จากนั้นกด + และเพิ่มความสามารถ "ลงชื่อเข้าใช้ด้วย Apple"
Apple ที่คำปราศรัยของ WWDC แบ่งขั้นตอนการใช้งานคุณลักษณะนี้ออกเป็นสี่ขั้นตอน ทุกขั้นตอนอธิบายไว้ด้านล่าง
- ปุ่ม 📱
ในตอนเริ่มต้นเราต้องเพิ่มปุ่มลงในหน้าจอของเรา ต้องเป็น ปุ่ม ASAuthorizationAppleIDButton จาก กรอบงาน AuthenticationService มีให้เลือกสองสี (ขาวและดำ) โดยมีชื่อเรื่องต่างกัน ไปที่ปุ่ม เราต้องเพิ่มการกระทำที่จะเรียกใช้หลังจากแตะมัน ฉันอธิบายการดำเนินการให้สิทธิ์ในจุดที่สอง
นำเข้า AuthenticationServices ปุ่มให้ = ASAuthorizationAppleIDButton (ประเภท: .signIn, สไตล์: .white) button.addTarget(ตัวเอง การกระทำ: #selector(appleIdButtonClicked) สำหรับ: .touchUpInside) stackView.addArrangedSubview (ปุ่ม)
- ขอ อนุ ญาติ️
ที่นี่ เราสร้างคำขออนุญาต ซึ่งตามที่ ร้องขอ ขอบเขต เราให้เฉพาะข้อมูลที่จำเป็นในการสร้างบัญชีในแอปพลิเคชันหรือเว็บไซต์ของเรา ในกรณีของฉันนี่คือชื่อเต็มและที่อยู่อีเมล จากนั้นตั้งผู้รับมอบสิทธิ์และทำการร้องขอ
@objc func appleIdButtonClicked () { ให้คำขอ = ASAuthorizationAppleIDProvider().createRequest() request.requestedScopes = [.fullName, .email] ให้คอนโทรลเลอร์ = ASAuthorizationController (อนุญาตคำขอ: [คำขอ]) controller.delegate = ตัวเอง controller.presentationContextProvider = ตนเอง controller.performRequests() }
- การ ตรวจสอบ ✅
หลังจากตรวจสอบอย่างรวดเร็วด้วย Face ID, Touch ID หรือรหัสผ่าน ผลการอนุญาตจะถูกส่งกลับ เมื่อการอนุญาตสำเร็จ เมธอด didCompleteWithAuthorization จะส่งคืนอ็อบเจ็กต์ ประเภท AppleIdCredential จากนั้น คุณต้องตรวจสอบว่าเป็นข้อมูลประจำตัวของ ประเภท ASAuthorizationAppleIdCredential หรือไม่ ถ้าใช่ เราจะพบข้อมูลที่จำเป็นทั้งหมดในการตั้งค่าบัญชีในระบบของเราในวัตถุนี้ เช่น ID ผู้ใช้ที่ไม่ซ้ำกัน ชื่อเต็ม และที่อยู่อีเมล (ซึ่ง ผู้ใช้ได้ขอก่อนหน้านี้) ณ จุดนี้ เราสามารถดำเนินการสร้างบัญชีในระบบของเราได้โดยการให้ข้อมูลที่จำเป็นเท่านั้น หากเกิดข้อผิดพลาด ข้อผิดพลาดนั้นจะถูกส่งคืนใน เมธอด didCompleteWithError ซึ่งเราสามารถจัดการกับข้อผิดพลาดนี้ได้

func authorizationController (ตัวควบคุม: ASAuthorizationController, didCompleteWithAuthorization การอนุญาต: ASAuthorization) {
ถ้าให้ appleIDCredential = Authorization.credential เป็น? ASAuthorizationAppleIDCredential { // สร้างบัญชีในระบบของคุณ } อื่นถ้าให้ passwordCredential = authorization.credential as? ASPasswordCredential { // ลงชื่อเข้าใช้โดยใช้ข้อมูลประจำตัว iCloud Keychain ที่มีอยู่ } } func authorizationController (ตัวควบคุม: ASAuthorizationController, ข้อผิดพลาด didCompleteWithError: ข้อผิดพลาด) { พิมพ์ (ผิดพลาด) }
- การจัดการการเปลี่ยนแปลง 🔀
คุณต้องเตรียมพร้อมสำหรับความจริงที่ว่าผู้ใช้เช่นหยุดใช้การเข้าสู่ระบบแอปพลิเคชันโดยใช้ Apple ID สิ่งนี้ควรได้รับการจัดการอย่างเหมาะสมหลังจากที่ผู้ใช้เปิดแอปพลิเคชันอีกครั้ง
การใช้ ID ผู้ใช้ที่เราได้รับระหว่างการลงทะเบียนบัญชี ทำให้เราสามารถรับสถานะปัจจุบันของข้อมูลรับรอง Apple ID ได้โดยเรียกใช้ เมธอด getCredentialState อย่างรวดเร็ว วิธีนี้สามารถส่งคืนสามสถานะ:
- ได้รับอนุญาต — ผู้ใช้ที่ได้รับอนุญาตซึ่งสามารถใช้แอปพลิเคชันต่อไปได้
- เพิกถอน — ออกจากระบบผู้ใช้และคุณสามารถเลือกนำเขาไปที่หน้าจอเข้าสู่ระบบเพื่อเข้าสู่ระบบอีกครั้ง
- 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” ในแอปของฉันหรือไม่ 🤔
หากแอปพลิเคชันของคุณใช้วิธีเข้าสู่ระบบของบุคคลที่สาม เช่น Facebook, Google หรือ LinkedIn คุณต้องเพิ่มการลงชื่อเข้าใช้ด้วย Apple ตามหลักเกณฑ์ใหม่ด้วย ถ้าคุณไม่เพิ่ม ใบสมัครของคุณอาจถูกปฏิเสธและอาจไม่ได้รับการตรวจสอบโดย Apple ด้านล่างนี้เป็นลิงค์ไปยังข่าวและใบเสนอราคาจากแนวทางปฏิบัติ
แนวทางใหม่สำหรับการลงชื่อเข้าใช้ด้วย Apple — 12 กันยายน 2019 ⚠️
เริ่มตั้งแต่วันนี้ แอพใหม่ที่ส่งไปยัง App Store จะต้องปฏิบัติตามหลักเกณฑ์เหล่านี้ แอปที่มีอยู่และการอัปเดตแอปต้องติดตามภายในเดือนเมษายน 2020
ด้านล่างนี้เป็นแอปพลิเคชั่นที่เสนอการเข้าสู่ระบบโดยใช้คุณสมบัติใหม่ของ 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