AppleAuth เป็นไลบรารีที่เรียบง่ายสำหรับ .NET ที่สรุปตรรกะสำหรับการสื่อสารกับ REST API ของ Apple สำหรับการลงชื่อเข้าใช้ด้วย Apple เป้าหมายหลักคือทำให้การใช้งานการลงชื่อเข้าใช้ด้วย Apple ง่ายขึ้นสำหรับเว็บแอปพลิเคชันใดๆ
ในการติดตั้งแพ็คเกจให้รันคำสั่งต่อไปนี้ใน Package Manager Console ของคุณ:
PM > Install - Package AppleAuth . NET
หรืออีกวิธีหนึ่งเพียงแค่ติดตั้งแพ็คเกจโดยใช้ตัวจัดการแพ็คเกจ Nuget โครงการสามารถพบได้ที่นี่: ลิงก์ไปยัง NuGet
หากต้องการใช้การลงชื่อเข้าด้วย Apple คุณต้องลงทะเบียนใน Apple Developer Program หลังจากที่คุณลงทะเบียนในโปรแกรมแล้ว ให้ไปที่วิธีใช้บัญชีนักพัฒนา แล้วไปที่กำหนดค่าความสามารถของแอป > ลงชื่อเข้าใช้ด้วย Apple คุณจะพบข้อมูลสำหรับการกำหนดค่าการลงชื่อเข้าใช้ด้วย Apple สำหรับแอปของคุณได้จากที่นั่น
คุณยังสามารถเช็คเอาท์บล็อกโพสต์ของฉันเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าในบัญชีนักพัฒนาซอฟต์แวร์ของคุณที่ใช้การลงชื่อเข้าใช้ด้วย Apple
ถัดไป คุณต้องกำหนดค่าหน้าเว็บของคุณสำหรับการลงชื่อเข้าใช้ด้วย Apple ปฏิบัติตามคำแนะนำจากเอกสารอย่างเป็นทางการ คุณยังสามารถดูลิงก์นี้เพื่อดูวิธีการตั้งค่ารูปแบบของปุ่มต่างๆ
หากคุณกำลังปรับใช้แอปของคุณกับ Azure Web App ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มการตั้งค่าต่อไปนี้: WEBSITE_LOAD_USER_PROFILE = 1
เพื่อให้ IIS สามารถเข้าถึงที่เก็บข้อมูลคีย์ส่วนตัวภายใต้ร้านค้าบัญชีผู้ใช้ คุณสามารถใช้สิ่งนี้ได้จากพอร์ทัล Azure จากการกำหนดค่า > การตั้งค่าแอปพลิเคชัน หรือคุณสามารถเรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
สิ่งสำคัญที่ควรทราบก็คือการตั้งค่านี้ใช้ได้กับระดับราคาที่ไม่แชร์เท่านั้น
หากคุณกำลังปรับใช้แอปของคุณกับเว็บเซิร์ฟเวอร์ของคุณเองที่ใช้ Microsoft IIS คุณจะต้องเปิดใช้งาน "โหลดโปรไฟล์ผู้ใช้" ภายใต้ "การตั้งค่าขั้นสูง" บนกลุ่มแอปพลิเคชันของคุณ มิฉะนั้น คุณจะได้รับ CryptographicException แจ้งว่า "ระบบไม่พบไฟล์ที่ระบุ"
AppleAuthProvider.cs
สร้างอินสแตนซ์ใหม่ของ AppleAuthProvider
ส่งพารามิเตอร์ที่จำเป็นเท่านี้คุณก็พร้อมแล้ว ใช้วิธี GetAuthorizationToken
เพื่อรับโทเค็นการอนุญาตจาก Apple ใช้วิธี GetRefreshToken
เพื่อตรวจสอบว่าผู้ใช้ยังคงใช้ "ลงชื่อเข้าใช้ด้วย Apple" เพื่อลงชื่อเข้าใช้ระบบของคุณหรือไม่ ใช้เมธอด GetButtonHref
เพื่อรับสตริงการสืบค้นสำหรับปุ่ม "ลงชื่อเข้าใช้ด้วย Apple"
หลังจากที่ผู้ใช้คลิกที่ปุ่ม "ลงชื่อเข้าใช้ด้วย Apple" บนเพจของคุณ พวกเขาจะถูกเปลี่ยนเส้นทางไปที่ https://appleid.apple.com/ หลังจากที่พวกเขาให้ข้อมูลประจำตัวแล้ว Apple จะส่งคำขอ POST ไปยัง URL ที่คุณระบุเป็น URL การเปลี่ยนเส้นทาง คุณสามารถจัดการคำขอได้โดยใช้ InitialTokenResponse.cs
ในการดึงโทเค็นการอนุญาต คุณควรสร้างอินสแตนซ์ใหม่ของ AppleAuthProvider
ด้วยพารามิเตอร์ที่จำเป็นก่อน หลังจากนั้นเพียงเรียกเมธอด GetAuthorizationToken() ส่ง code
จากวัตถุ InitialTokenResponse
และคีย์ส่วนตัวของคุณ นี่คือตัวอย่างการใช้งานใน C#:
[ HttpPost ]
public async Task HandleResponseFromApple ( AppleAuth . TokenObjects . InitialTokenResponse response )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuth . AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "MyRedirectUrl" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken authorizationToken = await provider . GetAuthorizationToken ( response . code , privateKey ) ;
}
โปรดทราบว่าโทเค็นที่ส่งคืนจาก Apple จะมีอายุการใช้งานสั้น ดังนั้น คุณควรสร้างเซสชันหรือผู้ใช้ในระบบของคุณโดยใช้ออบเจ็กต์ AppleAuth.TokenObjects.AuthorizationToken
ที่ส่งคืน หลังจากนั้นคุณสามารถตรวจสอบได้ว่าผู้ใช้ยังคงเข้าสู่ระบบโดยใช้ "ลงชื่อเข้าใช้ด้วย Apple" หรือไม่ โดยดึงโทเค็นการรีเฟรชโดยใช้วิธี GetRefreshToken
:
[ HttpPost ]
public async Task < bool > IsUserUsingAppleID ( )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "https://myredirecturl.com/HandleResponseFromApple" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken refreshToken = await provider . GetRefreshToken ( authorizationToken . RefreshToken , privateKey ) ;
return refreshToken != null ;
}
เรายินดีเป็นอย่างยิ่งที่จะมีส่วนร่วมในโครงการและทำให้ดีขึ้น เมื่อมีส่วนร่วม โปรดพยายามรักษาทัศนคติที่เป็นมืออาชีพ ให้ความเคารพ และเป็นมิตรอย่างเคร่งครัด นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณแจ้งการเปลี่ยนแปลงที่คุณต้องการดำเนินการผ่านปัญหาหรือวิธีการอื่นใดกับเจ้าของพื้นที่เก็บข้อมูลนี้
เราไม่มีแนวทางปฏิบัติที่เข้มงวดสำหรับการสร้างคำขอดึงข้อมูล แต่คุณสามารถใช้โฟลว์ GitHub ที่ทราบอยู่แล้วสำหรับแนวทางทั่วไปได้
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT - ดูรายละเอียดที่ LICENSE.md