ลงชื่อเข้าใช้ด้วย Apple - นำไปใช้ในแอปของคุณ!
เผยแพร่แล้ว: 2020-01-14ลงชื่อเข้าใช้ด้วย Apple ซึ่งเป็นคุณสมบัติใหม่ที่นำเสนอโดย Apple ที่ WWDC เมื่อปีที่แล้ว พร้อมใช้งานแล้วจาก iOS 13 ฟีเจอร์นี้นำเสนอการลงทะเบียนบัญชีที่ง่ายและปลอดภัยและการเข้าสู่ระบบในแอปพลิเคชันหรือเว็บไซต์ แทนที่จะกรอกแบบฟอร์มลงทะเบียนหรือเข้าสู่ระบบผ่านโซเชียลมีเดีย ตอนนี้คุณสามารถสร้างบัญชีและเข้าสู่ระบบด้วย Apple ID ของคุณและยืนยันด้วย Face ID, Touch ID หรือรหัสผ่าน
คำอธิบายสั้น ๆ ของการลงชื่อเข้าใช้ด้วย Apple:
- ตั้งค่าบัญชีและลงชื่อเข้าใช้ได้ง่าย รวดเร็ว
- ที่อยู่อีเมลที่ยืนยันแล้ว
- ความปลอดภัยในตัว
- ต่อต้านการฉ้อโกง
- ข้ามแพลตฟอร์ม ️
- iOS 13+
ในบทความนี้ ผมจะเน้นที่การ ใช้งานพื้นฐานของการลงชื่อเข้าใช้ด้วย Apple บนอุปกรณ์ iOS โดยไม่ต้องผสานกับเวอร์ชันเว็บหรือการผสานรวมกับส่วนหลัง
ฟีเจอร์ “ลงชื่อเข้าใช้ด้วย Apple” ทำงานอย่างไร

หลังจากแตะ "ลงชื่อเข้าใช้ด้วย Apple" หรือ "ดำเนินการต่อด้วย Apple" (ขึ้นอยู่กับว่าปุ่มใดถูกเลือกใช้ในแอปพลิเคชัน) หน้าต่างข้อมูลจะปรากฏขึ้นพร้อมความเป็นไปได้ของโซลูชันนี้ (ภาพหน้าจอที่สอง) จากนั้นหลังจากแตะ "ดำเนินการต่อ" เราได้รับข้อมูลว่าข้อมูลใดบ้างที่จะแชร์กับเจ้าของแอปพลิเคชัน
เรามีสองตัวเลือกในการลงทะเบียนบัญชีในแอปพลิเคชันโดยใช้ Sign In With Apple:
- ด้วยการแบ่งปันที่อยู่อีเมลของเรา ที่อยู่ อีเมลจริงของคุณจะถูกแบ่งปันกับแอปพลิเคชันหรือเว็บไซต์
- ด้วยการซ่อนที่อยู่อีเมลของเรา อีเมล จริงของคุณจะไม่ถูกแชร์กับแอปพลิเคชันหรือเว็บไซต์ Apple จะสร้างอีเมลเฉพาะสำหรับคุณด้วยโดเมน @privaterelay.appleid.com ไม่ต้องกังวล อีเมลทั้งหมดจากเจ้าของแอปจะถูกส่งต่อไปยังกล่องจดหมายของคุณอยู่ดี เพราะอีเมลจะถูกส่งต่อไปยังที่อยู่อีเมลจริงของเรา เจ้าของแอปจะทราบเฉพาะที่อยู่อีเมลที่สร้างด้วยโดเมน Apple
หลังจากเลือกตัวเลือกใดตัวเลือกหนึ่งแล้วแตะ "ดำเนินการต่อ" เราจะตรวจสอบ Apple ID ของเราในกรณีของการปลดล็อกโทรศัพท์ เช่น ด้วย Face ID, Touch ID หรือโดยการป้อนรหัสผ่าน ณ จุดนี้ควรสร้างบัญชีในแอปพลิเคชัน / เว็บไซต์ด้วยตัวระบุเฉพาะสำหรับผู้ใช้

เมื่อคุณเคยใช้ในแอปพลิเคชัน “ลงชื่อเข้าใช้ด้วย Apple” มาก่อน คุณสามารถดูตัวอย่างรายละเอียดของวิธีการเข้าสู่ระบบในการตั้งค่านี้และหยุดใช้คุณสมบัตินี้ ในการดำเนินการนี้ ให้ไปที่การตั้งค่า > Apple ID > รหัสผ่านและความปลอดภัย > แอปที่ใช้ Apple ID ของคุณ > เลือกแอป
จะใช้งาน “ลงชื่อเข้าใช้ด้วย Apple” ได้อย่างไร
หลังจากอ่านส่วนทฤษฎีของ “Sign In With 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” ในแอปของฉันหรือไม่
หากแอปพลิเคชันของคุณใช้วิธีเข้าสู่ระบบของบุคคลที่สาม เช่น 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