توليد رمز دخول جديد
POST/auth/api/v1/accounts/token
يُولّد رمز دخول جديد باستخدام رمز التحديث (Refresh Token)، عشان تقدر تكمل تستخدم النظام بدون ما تحتاج تسجل دخول مرة ثانية باسم المستخدم وكلمة المرور.
شوية نصايح لإدارة رمز الدخول (Access Token)
لما ترسل طلب على واجهة تسجيل الدخول (Login API) بيطلع لك رمزين:
- رمز الدخول (Access Token): صالح لمدة 45 دقيقة، وتستخدمه عشان تتعامل مع أنظمتنا.
- رمز التحديث (Refresh Token): فترة صلاحيته أطول بكثير، عشان تقدر تظل متواصل مع النظام بدون ما تحتاج تعيد التحقق.
كيف تستخدم الرموز:
رمز الدخول:
- تأكد تستخدم رمز الدخول خلال الـ 45 دقيقة قبل ما تنتهي صلاحيته.
- لو انتهت صلاحية رمز الدخول وأنت تستخدمه، النظام بيرد عليك بخطأ برمز 401.
لو صار الخطأ 401 (انتهت صلاحية الرمز):
- إذا جتك استجابة برمز 401، معناها رمز الدخول انتهى.
- وقتها لازم على طول تستدعي واجهة
/token
. - قدم رمز التحديث اللي استلمته لما سجلت دخول.
- الواجهة
/token
بتعطيك رمز دخول جديد تقدر تستخدمه.
طريقة تسجيل دخول بديلة
تقدر تسجل دخول باستخدام Basic Authentication عن طريق إرسال رمز التوثيق اللي هو عبارة عن username:password
مشفّر بصيغة Base64.
باستخدام هالطريقة، النظام راح يتولى إدارة تجديد الرموز (Token Rotation) بشكل تلقائي.
⚙️ مثال عام (Pseudocode)
IF access_token is expired:
CALL /token endpoint WITH refresh_token
STORE new access_token
ELSE:
USE access_token IN headers
IF no access_token stored:
ENCODE username:password TO base64
SEND login request to /auth/api/v1/accounts/login
RECEIVE access_token and refresh_token
STORE both tokens
💻 أمثلة بلغات برمجة
🐍 Python (requests)
import requests
from base64 import b64encode
username = "johndoe"
password = "your_password"
auth_string = f"{username}:{password}"
headers = {
"Authorization": "Basic " + b64encode(auth_string.encode()).decode()
}
res = requests.post("https://logistiq-api-endpoint.com/auth/api/v1/accounts/login", headers=headers)
tokens = res.json()
access_token = tokens["access"]
refresh_token = tokens["refresh"]
⚡ JavaScript (fetch)
const username = "johndoe";
const password = "your_password";
const base64 = btoa(`${username}:${password}`);
fetch("https://logistiq-api-endpoint.com/auth/api/v1/accounts/login", {
method: "POST",
headers: {
"Authorization": `Basic ${base64}`
}
})
.then(res => res.json())
.then(tokens => {
const access = tokens.access;
const refresh = tokens.refresh;
// Store and use tokens
});
💻 cURL
curl -X POST https://{{BASE_URL}}/auth/api/v1/accounts/login \
-H "Authorization: Basic $(echo -n 'username:password' | base64)"
🚨 تنبيه مهم
تحذير:
نظام تسجيل الدخول مربوط مع Google Firebase، عشان كذا لا تحاول تولّد Access Token كل مرة تسوي فيها طلب!
حافظ على الرموز عندك وجدّدها بس لما تحتاج، لأن Google ممكن تعتبر هالشي نشاط مشبوه وتحجب الحساب مؤقتًا أو نهائيًا.
Request
Responses
- 200