تخطي إلى المحتوى
PollsLive

دليل المطوّر

OAuth 2.0: بيانات اعتماد العميل (Client Credentials)

وثّق تكاملات جهة الخادم دون جلسة مستخدم باستخدام تدفّق Client Credentials القياسي (RFC 6749 §4.4).

نظرة عامة

صُمّم منح Client Credentials للتكاملات بين الخوادم حيث لا يوجد مستخدم حاضر: خطوط CI، والمهام المجدولة، وخدمات الواجهة الخلفية، وتكاملات منصّات SaaS. إذ يبادل تطبيقك زوج client_id / client_secret برمز وصول Bearer قصير الأجل.

نقطة نهاية الرمز

POST https://pollslive.com/api/oauth/token

مدة صلاحية الرمز

3600 ثانية (ساعة واحدة)

الخطة المطلوبة

أي خطة مدفوعة (Pro فما فوق)

متى تستخدم OAuth ومتى مفاتيح API

الحالةبيانات الاعتماد المُوصى بها
الأتمتة الشخصية / السكربتاتمفتاح API
عملية خادم داخلية لمساحة عمل واحدةمفتاح API
منتج SaaS يدمج PollsLive لعملاء متعدّدينOAuth Client Credentials لكل مساحة عمل عميل
تدوير بمبدأ انعدام الثقة دون توقّفOAuth (تنتهي الرموز تلقائيًا) أو تدوير مفتاح API
وصول خارجي محدود بالنطاقاتOAuth مع نطاقات

1. إنشاء عميل OAuth

انتقل إلى Studio ← واجهة المطوّرين ← عملاء OAuth 2.0 واضغط إنشاء عميل OAuth. امنح العميل اسمًا واضحًا، وضيّق النطاقات إن أردت.

احفظ clientSecret فورًا. فهو، مثل مفتاح API، يُعرَض مرة واحدة فقط ولا يُخزَّن أبدًا كنص صريح.

2. الحصول على رمز وصول

أرسل طلب POST إلى نقطة نهاية الرمز بصيغة application/x-www-form-urlencoded (المعيار في RFC) أو application/json (للتيسير):

الطلب: form-urlencoded (معيار RFC)
curl -X POST https://pollslive.com/api/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=plv_cid_…&client_secret=plv_cs_…&scope=polls:read polls:write"
الطلب: JSON (للتيسير)
curl -X POST https://pollslive.com/api/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "plv_cid_…",
    "client_secret": "plv_cs_…",
    "scope": "polls:read polls:write"
  }'
الاستجابة
{
  "access_token": "plv_oauth_…",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "polls:read polls:write"
}

تتبع الأخطاء صيغة RFC 6749 §5.2. { "error": "invalid_client", "error_description": "…" }

3. استخدام الرمز

ضمّن access_token كرمز Bearer في كل طلب إلى API، تمامًا كما تفعل بمفتاح API:

طلب موثّق
curl https://pollslive.com/api/v1/polls \
  -H "Authorization: Bearer plv_oauth_…"

ينبغي لتطبيقك تخزين الرمز مؤقتًا وطلب رمز جديد فقط عند اقتراب expires_in (مثلًا عند تبقّي أقل من خمس دقائق).

مدة الرمز وتجديده

تصلح الرموز لمدة ساعة واحدة (expires_in: 3600). ولا يوجد رمز تحديث. اطلب ببساطة رمزًا جديدًا ببيانات اعتماد العميل عند انتهاء الحالي. ولأن التدفّق يجري في جهة الخادم، لا يغادر سرّ العميل واجهتك الخلفية أبدًا.

نمط تدوير الرمز (Node.js)
let token = null;
let expiresAt = 0;

async function getToken() {
  if (token && Date.now() < expiresAt - 5 * 60 * 1000) return token;

  const res = await fetch("https://pollslive.com/api/oauth/token", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      grant_type: "client_credentials",
      client_id: process.env.OAUTH_CLIENT_ID,
      client_secret: process.env.OAUTH_CLIENT_SECRET,
    }),
  });
  const data = await res.json();
  token = data.access_token;
  expiresAt = Date.now() + data.expires_in * 1000;
  return token;
}

النطاقات

تتيح لك النطاقات تحديد ما يمكن لعميل OAuth فعله. وإن لم تحدّد أي نطاق عند إنشاء العميل، فإنه يرث وصولًا كاملًا إلى مساحة العمل (بما يعادل مفتاح API).

راجع مرجع النطاقات الكامل للاطلاع على القائمة كلها.

إبطال عميل

يؤدي إبطال العميل إلى إلغاء جميع الرموز الصادرة له فورًا. وستفشل الطلبات الجارية التي تستخدم أحد هذه الرموز بالخطأ 401 invalid_oauth_token.

انتقل إلى Studio ← واجهة المطوّرين ← عملاء OAuth 2.0 واضغط إبطال.

هل لا تزال لديك أسئلة؟

يسعد فريقنا بمساعدتك.

تواصل معنا

نستخدم ملفات تعريف ارتباط ضرورية لإبقائك مسجّل الدخول ولمنع التصويت المكرر. وبإذنك، نستخدم أيضًا Cloudflare Web Analytics لإحصاء مشاهدات الصفحات وWhop Pixel لمعرفة الزيارات التي تؤدي إلى عملية شراء. سياسة ملفات تعريف الارتباط