تمكنك هذه المكتبة من دمج مصادقة Google بسلاسة في تطبيق Next.js الخاص بك ، مما يلغي الحاجة إلى تطويره من البداية.
يعد دمج نظام مصادقة آمن خطوة تطوير مهمة لا توفر فقط بيئة آمنة للمستخدمين ولكنها تغرس أيضًا الثقة في منتجك. يضمن هذا النظام حماية بياناتهم وأن الأفراد المصرح لهم فقط هم من يمكنهم الوصول إلى التطبيق.
يمكن أن يكون إنشاء مصادقة آمنة من الألف إلى الياء عملية تستغرق وقتًا طويلاً وتتطلب إجراءً شاملاً فهم بروتوكولات وعمليات المصادقة ، خاصة عند التعامل مع المصادقة المختلفة مقدمي.
باستخدام NextAuth ، يمكنك تحويل تركيزك إلى بناء الميزات الأساسية. تابع القراءة لمعرفة كيفية دمج تسجيل الدخول الاجتماعي من Google في تطبيقك باستخدام NextAuth.
كيف يعمل NextAuth
NextAuth.js هي مكتبة مصادقة مفتوحة المصدر تبسط عملية الإضافة المصادقة والتخويل وظائف تطبيقات Next.js بالإضافة إلى تخصيص سير عمل المصادقة. يوفر مجموعة من الميزات مثل البريد الإلكتروني والمصادقة بدون كلمة مرور ودعم مختلف موفري المصادقة مثل Google و GitHub والمزيد.
على مستوى عالٍ ، يعمل NextAuth كبرنامج وسيط ، مما يسهل عملية المصادقة بين التطبيق والموفر. تحت الغطاء ، عندما يحاول المستخدم تسجيل الدخول ، تتم إعادة توجيهه إلى صفحة تسجيل الدخول في Google. عند المصادقة الناجحة ، تقوم Google بإرجاع حمولة تتضمن بيانات المستخدم ، مثل الاسم وعنوان البريد الإلكتروني. تُستخدم هذه البيانات للسماح بالوصول إلى التطبيق وموارده.
باستخدام بيانات الحمولة ، ينشئ NextAuth جلسة لكل مستخدم مصادق عليه ويخزن الرمز المميز للجلسة في ملف تعريف ارتباط HTTP آمن فقط. يتم استخدام الرمز المميز للجلسة للتحقق من هوية المستخدم واستمرار حالة المصادقة الخاصة به. تنطبق هذه العملية أيضًا على مقدمي الخدمات الآخرين مع اختلافات طفيفة في التنفيذ.
قم بتسجيل تطبيق Next.js الخاص بك على Google Developer Console
يوفر NextAuth دعمًا لخدمة مصادقة Google. ومع ذلك ، لكي يتفاعل تطبيقك مع Google APIs ويسمح للمستخدمين بالمصادقة باستخدام بيانات اعتماد Google الخاصة بهم ، ستحتاج إلى تسجيل تطبيقك على وحدة تحكم مطوري Google و الحصول على معرف العميل و سر العميل.
للقيام بذلك ، انتقل إلى وحدة تحكم مطوري Google. بعد ذلك ، قم بتسجيل الدخول باستخدام حساب Google الخاص بك للوصول إلى وحدة التحكم. بمجرد تسجيل الدخول ، قم بإنشاء مشروع جديد.
في صفحة نظرة عامة على المشروع ، حدد ملف واجهات برمجة التطبيقات والخدمات علامة التبويب من قائمة الخدمات في جزء القائمة الأيسر وأخيرًا ملف أوراق اعتماد خيار.
اضغط على إنشاء بيانات الاعتماد زر لإنشاء معرّف العميل وسر العميل. بعد ذلك ، حدد نوع التطبيق من الخيارات المحددة ثم أدخل اسمًا للتطبيق الخاص بك.
بعد ذلك ، حدد عنوان URL للمسار الرئيسي لتطبيقك وحدد أخيرًا URI المعتمد لإعادة التوجيه لتطبيقك. في هذه الحالة ، يجب أن يكون http://localhost: 3000 / api / auth / callback / google كما هو محدد بواسطة إعدادات مزود Google في NextAuth.
عند التسجيل الناجح ، ستزودك Google بمعرف العميل وسر العميل لاستخدامهما في تطبيقك.
قم بإعداد تطبيق NextJS
للبدء ، أنشئ مشروع Next.js محليًا:
npx create-next-app next-auth-app
بعد اكتمال الإعداد ، انتقل إلى دليل المشروع الذي تم إنشاؤه حديثًا وقم بتشغيل هذا الأمر لتدوير خادم التطوير.
npm تشغيل dev
افتح المستعرض الخاص بك وانتقل إلى http://localhost: 3000. يجب أن تكون هذه هي النتيجة المتوقعة.
يمكنك العثور على رمز هذا المشروع في ملف مستودع جيثب.
إعداد ملف .env
في المجلد الجذر لمشروعك ، أنشئ ملفًا جديدًا وقم بتسميته .env للاحتفاظ بمعرف العميل والسرية وعنوان URL الأساسي.
NEXT_PUBLIC_GOOGLE_CLIENT_ID = "معرف العميل"
NEXT_PUBLIC_GOOGLE_CLIENT_SECRET = 'سر'
NEXT_PUBLIC_NEXTAUTH_URL = ' http://localhost: 3000'
يتم استخدام عنوان URL لـ NextAUTH لتحديد عنوان URL الأساسي لتطبيقك ، والذي يتم استخدامه لإعادة توجيه المستخدمين بعد اكتمال المصادقة.
ادمج NextAuth في تطبيق Next.js الخاص بك
أولاً ، قم بتثبيت مكتبة NextAuth في مشروعك.
npm تثبيت المصادقة التالية
بعد ذلك ، في /pages الدليل ، قم بإنشاء مجلد جديد وقم بتسميته api. قم بتغيير الدليل إلى ملف api مجلد ، وإنشاء مجلد آخر يسمى المصادقة. في مجلد المصادقة ، أضف ملفًا جديدًا وقم بتسميته [... nextauth] .js وأضف سطور التعليمات البرمجية التالية.
يستورد NextAuth من"المصادقة التالية / التالية";
يستورد GoogleProvider من"المصادقة التالية / الموفرون / google";
يصدّرتقصير NextAuth ({
الموفرون: [
GoogleProvider ({
معرف العميل: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_ID ،
سر العميل: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_SECRET ،
}),
]
});
يعمل هذا الرمز على تكوين Google كموفر المصادقة. تحدد وظيفة NextAuth كائن تهيئة موفر Google الذي يأخذ خاصيتين: معرف العميل وسر العميل الذي يقوم بتهيئة الموفر.
بعد ذلك ، افتح ملف الصفحات / _app.js ملف وقم بإجراء التغييرات التالية على الكود.
يستورد"../styles/globals.css"
يستورد {SessionProvider} من"المصادقة / التفاعل التالي"
وظيفةتطبيقي({مكون ، pageProps: {جلسة ،... pageProps}}) {
يعود (
</SessionProvider>
)
}
يصدّرتقصير تطبيقي
NextAuth ل مقدم الجلسة يوفر المكون وظيفة إدارة حالة المصادقة لتطبيق Next.js. انه يأخذ حصة الخاصية التي تحتوي على بيانات جلسة المصادقة التي يتم إرجاعها من واجهة برمجة تطبيقات Google والتي تتضمن تفاصيل المستخدم مثل المعرف والبريد الإلكتروني ورمز الوصول.
عن طريق التفاف تطبيقي المكون مع المكون SessionProvider ، يتم توفير كائن جلسة المصادقة مع تفاصيل المستخدم في جميع أنحاء التطبيق ، مما يمكّن التطبيق من الاستمرار وعرض الصفحات بناءً على حالة المصادقة الخاصة بهم.
قم بتكوين ملف index.js
افتح ال الصفحات / index.js ملف ، واحذف الرمز المعياري ، وأضف الرمز أدناه لإنشاء زر تسجيل دخول يوجه المستخدمين إلى صفحة تسجيل الدخول.
يستورد رأس من"التالي / الرأس"
يستورد الأنماط من"../styles/Home.module.css"
يستورد {useRouter} من"التالي / جهاز التوجيه";يصدّرتقصيروظيفةبيت() {
مقدار ثابت جهاز التوجيه = useRouter () ،
يعود (
إنشاء التطبيق التالي < / title>
"description" content = "تم إنشاؤه عن طريق إنشاء التطبيق التالي" span> />
"icon" href = "/favicon.ico" />
< / Head>
مرحبًا بك في " https://nextjs.org">Next.js!</a>
< / h1>
ابدأ بالتوقيع في span> { ' span>}
مع span> حسابك في Google < / code>
onClick = { () => router.push ( '/ Login' )}> تسجيل الدخول < / button>
< / p>
< / main>
< / div>
)
}
تستخدم هذه الشفرة خطاف Next.js useRouter لمعالجة التوجيه داخل التطبيق من خلال تعريف كائن جهاز التوجيه. عند النقر على زر تسجيل الدخول ، تستدعي وظيفة المعالج طريقة router.push لإعادة التوجيه المستخدم في صفحة تسجيل الدخول. p>
إنشاء مصادقة تسجيل الدخول الصفحة
في دليل pages ، أنشئ ملفًا جديدًا Login.js ، ثم أضف سطور التعليمات البرمجية التالية. p>
استيراد span> {useSession ، تسجيل الدخول ، تسجيل الدخول} من span> "المصادقة التالية / التفاعل" span>
استيراد span> {useRouter} من span> "التالي / router ' ؛
استيراد span> أنماط من span> '../styles/Login.module.css' تصدير span> افتراضي span> وظيفة span> < span> تسجيل الدخول span> () {
const { data : session} = useSession ()
const router = useRouter ()؛
إذا span> (جلسة) {
إرجاع span> (
"title" > إنشاء التطبيق التالي < / h1>
موقّع < span> في كـ span> {session.user.email}
< / h2>