إزاي OAuth بيشتغل
يونيو 29, 2025إزاي OAuth بيشتغل؟
OAuth هو بروتوكول بيخلّي التطبيقات تقدر تدخل على بياناتك بطريقة آمنة من غير ما تدّيهم الباسورد بتاعك. زي مثلًا لو حبيت تطبيق ينشر بوستات عندك على تويتر.
🔐 يعني إيه OAuth؟
يعني تقدر تدي إذن لتطبيق يستخدم بياناتك زي الإيميل أو البروفايل من غير ما يعرف الباسورد. المستخدم بيوافق، والتطبيق بياخد صلاحيات محددة.
🔁 الخطوة ١: طلب التفويض
بتبعت المستخدم على صفحة موافقة:
const params = {
response_type: 'code',
client_id: 'client-id-بتاعك',
redirect_uri: 'https://app.com/callback',
scope: 'email profile',
state: 'كود-عشوائي'
};
const url = 'https://auth.example.com/oauth/authorize?' + new URLSearchParams(params);
// location.href = url;
🔁 الخطوة ٢: استلام الكود
بعد الموافقة، المستخدم بيرجع للتطبيق ومعاه كود مؤقت في الرابط.
🛠️ الخطوة ٣: تبادل الكود بتوكن
const response = await fetch('https://auth.example.com/oauth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'authorization_code',
code: 'الكود',
redirect_uri: 'https://app.com/callback',
client_id: 'العميل-id',
client_secret: 'السر'
})
});
const data = await response.json();
const accessToken = data.access_token;
💡 إيه هو PKCE؟
PKCE هو طريقة لحماية التطبيقات اللي مش قادرة تحفظ أسرار، زي تطبيقات الموبايل.
// في الواجهة
const codeVerifier = generateRandomString();
const codeChallenge = await sha256(codeVerifier);
sessionStorage.setItem('verifier', codeVerifier);
const params = {
response_type: 'code',
code_challenge_method: 'S256',
code_challenge: codeChallenge
};
📢 ملخص
- OAuth بيوفر طريقة آمنة للتفويض بدون كلمة سر.
- اتأكد من قيمة
state
عشان تمنع الاختراق. - PKCE لازم لتطبيقات الموبايل والـSPA.
المدونة
إزاي OAuth بيشتغل
يونيو 29, 2025
إزاي OAuth بيشتغل؟ OAuth هو بروتوكول بيخلّي التطبيقات تقدر تدخل على بياناتك بطريقة آمنة من غير ما تدّيهم الباسورد بتاعك. زي مثلًا لو حبيت تطبيق ينشر...
نظام طوابير Laravel واستخدام Supervisor في الإنتاج
يوليو 01, 2025
🚀 نظام Queue & Jobs في Laravel هناخدك خطوة خطوة من أول إنشاء الجداول لحد ما تشغّل الطوابير في Production عن طريق Supervisor. الخطوة 1: إنشاء...
تذكير بالمهام مع Laravel وMongoDB
يونيو 30, 2025
📌 بناء تطبيق تذكير مهام المقال ده بيشرح إزاي نعمل تطبيق Laravel يستخدم MongoDB علشان يذكرك بالمهمات بتاعتك، مع تسجيل دخول، CRUD، وتذكير بالإيميلات...
ألوان في CSS - شرح مبسّط
يونيو 26, 2025
ألوان في CSS - شرح مبسّط النهارده هنتكلم عن الألوان في CSS: ازاي بنحددها، وخصوصًا الطرق الحديثة زي lab() وoklch(). 1. يعني إيه لون؟ مفيش حاجة اسم...
إزاي تستخدم Web Components ببساطة وذكاء
يوليو 06, 2025
إزاي تستخدم Web Components ببساطة وذكاء كتير من المطورين بيفكروا إن Web Components معمولة عشان تبقى بديل كامل لفريموركات زي React أو Vue. بس الحقيق...
تاريخ React – استعراض شامل وتحليل تقني
يوليو 26, 2025
1. البدايات: النشأة داخل Facebook في عام 2011، واجه مهندسو Facebook تحديًا متزايدًا في صيانة واجهات المستخدم المعقدة والتفاعلية. تم تطوير مكتبة د...
