AppleAuth هي مكتبة بسيطة جدًا لـ .NET تتضمن منطق الاتصال بـ REST API من Apple لتسجيل الدخول باستخدام Apple. الهدف الرئيسي هو تسهيل تنفيذ تسجيل الدخول باستخدام Apple لأي تطبيق ويب.
لتثبيت الحزمة، قم بتنفيذ الأمر التالي في وحدة تحكم إدارة الحزم لديك:
PM > Install - Package AppleAuth . NETأو بدلاً من ذلك، قم فقط بتثبيت الحزمة باستخدام مدير الحزم Nuget. يمكن العثور على المشروع هنا: رابط إلى NuGet
لتتمكن من استخدام تسجيل الدخول باستخدام Apple، يجب عليك التسجيل في برنامج Apple Developer. بعد التسجيل في البرنامج، انتقل إلى تعليمات حساب المطور وانتقل إلى تكوين إمكانيات التطبيق > تسجيل الدخول باستخدام 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، فستحتاج إلى تمكين "تحميل ملف تعريف المستخدم" ضمن "الإعدادات المتقدمة" في تجمع التطبيقات الخاص بك. وإلا فسوف تحصل على استثناء تشفير يقول "لا يمكن للنظام العثور على الملف المحدد".
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 للحصول على التفاصيل