ลงชื่อเข้าใช้ด้วย 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 แบ่งขั้นตอนการใช้งานคุณลักษณะนี้ออกเป็นสี่ขั้นตอน ทุกขั้นตอนอธิบายไว้ด้านล่าง

  1. ปุ่ม 📱

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

 นำเข้า AuthenticationServices

ปุ่มให้ = ASAuthorizationAppleIDButton (ประเภท: .signIn, สไตล์: .white)

button.addTarget(ตัวเอง การกระทำ: #selector(appleIdButtonClicked) สำหรับ: .touchUpInside)

stackView.addArrangedSubview (ปุ่ม)
  1. ขอ อนุ ญาติ️

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

 @objc func appleIdButtonClicked () {

ให้คำขอ = ASAuthorizationAppleIDProvider().createRequest()

request.requestedScopes = [.fullName, .email]

ให้คอนโทรลเลอร์ = ASAuthorizationController (อนุญาตคำขอ: [คำขอ])

controller.delegate = ตัวเอง

controller.presentationContextProvider = ตนเอง

controller.performRequests()

}
  1. การ ตรวจสอบ

หลังจากตรวจสอบอย่างรวดเร็วด้วย 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: ข้อผิดพลาด) {

พิมพ์ (ผิดพลาด)

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

คุณต้องเตรียมพร้อมสำหรับความจริงที่ว่าผู้ใช้เช่นหยุดใช้การเข้าสู่ระบบแอปพลิเคชันโดยใช้ 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