انتقل إلى المحتوى الرئيسي

التسجيل باستخدام Oauth

في هذا المثال، نوضح كيفية التسجيل باستخدام Oauth

✅ هدف السيناريو:

  • يقوم المستخدم بالتسجيل مع مزود OAuth (Google، Facebook، إلخ)
  • مصادقة المستخدم باستخدام رمز تفويض OAuth
  • الحصول على بيانات المستخدم المصادق عليه بعد تدفق OAuth الناجح

✅ ما تحتاجه:

  • عنوان PROJECT_URL و APP_TOKEN صالحين للمصادقة مع واجهة برمجة التطبيقات OneEntry.
  • بيانات اعتماد مزود OAuth (client_id و client_secret) من Google أو Facebook أو مزود آخر.
  • رمز التفويض الذي تم الحصول عليه من إعادة توجيه مزود OAuth.
  • redirect_uri مُعد يتطابق مع ما تم تسجيله مع مزود OAuth.

📌 مهم:

  • هذه الأمثلة لا تتضمن معالجة الأخطاء.
  • يمكنك إدارة الأخطاء باستخدام كتلة try-catch أو من خلال استخدام بناء مثل await Promise.catch((error) => error).
  • تأكد من أن formIdentifier المستخدم في طريقة updateUser() يتطابق مع ما تم تكوينه في مشروع OneEntry الخاص بك.

السيناريو

1. استيراد defineOneEntry من SDK وتحديد url و token

مثال:

import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

2. إنشاء عميل API باستخدام دالة defineOneEntry()

مثال:

const { AuthProvider, Users } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

3. تسجيل المستخدم باستخدام AuthProvider.oauthSignUp()

البيانات:

{
"client_id": "34346983-luuct343473qdkqidjopdfp3eb3k4thp.apps.googleusercontent.com",
"client_secret": "43434343434",
"code": "4/0AVMBsJgwewewewewewei4D7T6E_fbswxnL3g",
"grant_type": "registration",
"redirect_uri": "http://localhost:3000",
"formData": {
"en_US": [
null
]
}
}

مثال:

const signUpResponse = await AuthProvider.oauthSignUp('email', body).catch((e) => e);
النتيجة:
{
"statusCode": 403,
"timestamp": "2026-01-04T01:20:52.612Z",
"message": "بيانات الإذن غير موجودة. قدم الإذن للرابط المطلوب",
"pageData": null
}

4. مصادقة المستخدم باستخدام AuthProvider.oauthSignUp()

البيانات:

{
"client_id": "34346983-luuct343473qdkqidjopdfp3eb3k4thp.apps.googleusercontent.com",
"client_secret": "43434343434",
"code": "4/0AVMBsJgwewewewewewei4D7T6E_fbswxnL3g",
"grant_type": "authorization_code",
"redirect_uri": "http://localhost:3000",
"formData": {
"en_US": [
null
]
}
}

مثال:

const authResponse = await AuthProvider.oauthSignUp('email', authBody).catch((e) => e);
النتيجة:
{
"statusCode": 403,
"timestamp": "2026-01-04T01:20:52.792Z",
"message": "بيانات الإذن غير موجودة. قدم الإذن للرابط المطلوب",
"pageData": null
}

5. الآن يمكنك الحصول على بيانات المستخدم باستخدام Users.getUser()

مثال:

const userData = await Users.getUser();

المثال النهائي

// 1. استيراد defineOneEntry من SDK وتحديد PROJECT_URL و APP_TOKEN
import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

// 2. إنشاء عميل API:
const { AuthProvider, Users } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. تسجيل المستخدم باستخدام AuthProvider.oauthSignUp()
const body = {
"client_id": "34346983-luuct343473qdkqidjopdfp3eb3k4thp.apps.googleusercontent.com",
"client_secret": "43434343434",
"code": "4/0AVMBsJgwewewewewewei4D7T6E_fbswxnL3g",
"grant_type": "registration",
"redirect_uri": "http://localhost:3000"
};
const signUpResponse = await AuthProvider.oauthSignUp('email', body).catch((e) => e);
// console.log(JSON.stringify(signUpResponse));

// 4. مصادقة المستخدم باستخدام AuthProvider.oauthSignUp()
const authBody = {
"client_id": "34346983-luuct343473qdkqidjopdfp3eb3k4thp.apps.googleusercontent.com",
"client_secret": "43434343434",
"code": "4/0AVMBsJgwewewewewewei4D7T6E_fbswxnL3g",
"grant_type": "authorization_code",
"redirect_uri": "http://localhost:3000"
};
const authResponse = await AuthProvider.oauthSignUp('email', authBody).catch((e) => e);
// console.log(JSON.stringify(authResponse));

// 5. الآن يمكنك الحصول على بيانات المستخدم باستخدام Users.getUser()
const user = await Users.getUser().catch((e) => e);
// console.log(JSON.stringify(user));