خدمة EL OUATINE للمطوّرين
«تسجيل الدخول عبر EL OUATINE»
وفّر على مستخدميك عناء إنشاء حساب جديد: زرّ واحد يسجّلهم الدخول بحساب EL OUATINE الخاص بهم. أنت تستلم معرّفًا موثوقًا (والاسم والبريد عند الطلب) — وكلمة المرور لا تغادر منصّتنا أبدًا.
أنشئ عميل OAuthدليل الدمجمن حسابك على المنصة
كيف يعمل؟
تدفّق OAuth2 القياسي — رمز التفويض (Authorization Code)
1
١. أنشئ عميلًامن حسابك: اسم التطبيق + روابط إعادة التوجيه (redirect URIs) المعتمدة. تحصل على client_id وclient_secret — يُعرض السرّ مرة واحدة فقط.
2
٢. وجّه المستخدمأرسله إلى /oauth/authorize مع client_id وredirect_uri والنطاقات المطلوبة (profile، email).
3
٣. شاشة الموافقةيرى المستخدم اسم تطبيقك والصلاحيات المطلوبة، ويوافق أو يرفض — دون أن يرى تطبيقُك كلمةَ مروره أبدًا.
4
٤. استبدل الرمزيصلك رمز (code) صالح لـ ١٠ دقائق لاستعمال واحد — استبدله عبر /oauth/token بتوكن وصول (ساعة واحدة).
5
٥. اقرأ الملفنادِ /oauth/userinfo بالتوكن: تحصل على المعرّف والاسم، والبريد فقط إذا طُلب نطاق email.
دليل الدمج
- أنشئ عميلًا وسجّل السرّ
POST /api/oauth/v1/clients من جلسة مسجّلة — يُعرض client_secret مرة واحدة فقط. احفظه في خادمك، ولا تضعه أبدًا في كود الواجهة. - وجّه المستخدم للموافقة
GET /oauth/authorize?client_id=…&redirect_uri=…&response_type=code&scope=profile%20email&state=… — يجب أن يطابق redirect_uri أحد الروابط المسجّلة حرفيًا. - استبدل الرمز بتوكن
POST /oauth/token خلال ١٠ دقائق: {grant_type:"authorization_code", code, redirect_uri, client_id, client_secret}. - اقرأ بيانات المستخدم
GET /oauth/userinfo مع Authorization: Bearer <access_token> — التوكن صالح لساعة واحدة.
مثال: استبدال الرمز (curl)
curl -X POST https://securecelleouatine.com/oauth/token \
-H "Content-Type: application/json" \
-d '{
"grant_type": "authorization_code",
"code": "RECEIVED_CODE",
"redirect_uri": "https://your-app.example/callback",
"client_id": "eloauth_YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}'مثال: قراءة الملف الشخصي (JavaScript)
const res = await fetch('https://securecelleouatine.com/oauth/userinfo', {
headers: { 'Authorization': 'Bearer ' + accessToken }
});
const profile = await res.json(); // { sub, name, email? }
if (res.status === 401) { /* التوكن منتهي أو ملغي — أعد التوجيه للموافقة */ }