bymong
(bymong)
17 مارس 2022، 3:19ص
1
أحاول إنشاء رمز عينة لتسجيل الخروج
نطاق موقعي هو ‘aaa.com ’، ومعرف المستخدم هو ‘1’.
لقد أنشأت عنوان URL وأرسلت طلبًا على هذا النحو.
-post AAA Sorry Page
أيضًا، أرسلت رأسًا بـ api-key، api-Username.
لكنني تلقيت ردًا يقول “عفوًا! هذه الصفحة غير موجودة أو خاصة.”
أحاول استخدام ‘CURL’، على هذا النحو.
لكنني حصلت على نفس النتيجة. (عفوًا! هذه الصفحة غير موجودة أو خاصة ~~~)
curl -X POST " AAA Sorry Page "
-H “Content-Type: multipart/form-data;”
-H “Api-Key: secretStringTemp”
-H “Api-Username: system”
-F “id=1” \
هل يمكنك مساعدتي في معرفة الخطأ الذي ارتكبته؟
seanc
(Sean)
17 أبريل 2023، 2:22م
2
أهلاً،
نفس المشكلة هنا. هل توصلت إلى أي حل؟
تحياتي
إعجاب واحد (1)
blake
(Blake Erickson)
17 أبريل 2023، 2:37م
3
لا يزال بإمكاني تسجيل خروج المستخدمين عبر واجهة برمجة التطبيقات. إليك أمر curl الذي استخدمته:
curl -i -sS -X POST "http://localhost:4200/admin/users/1/log_out.json" \
-H "Content-Type: multipart/form-data" \
-H "Api-Key: 64b901d2357526d1b6e8c439fd0570f9c585073e6160ae18cc82b7ac358d4893" \
-H "Api-Username: blake.erickson"
HTTP/1.1 200 OK
{"success":"OK"}
إذا كنت لا تزال تواجه مشكلات، فهل يمكنك مشاركة المزيد من المعلومات حول طلب واجهة برمجة التطبيقات الخاص بك معنا؟
إعجاب واحد (1)
seanc
(Sean)
17 أبريل 2023، 2:15م
4
لقد وصلت إلى طريق مسدود!
لا يمكنني تسجيل خروج مستخدم باستخدام نقطة النهاية API /admin/users/{USER_ID}/log_out.json
أقوم باسترداد USER_ID الخاص بـ discourse بنجاح باستخدام: /u/by-external/${user.id}.json.
أقوم أيضًا باسترداد البيانات عن طريق الوصول إلى نقاط نهاية API أخرى لذا أنا راضٍ عن مفتاح API وآليات طلبي.
ولكن عند محاولة إرسال طلب post…
await axios.post(`${process.env.FORUM_URL}/admin/users/${UserID}/log_out.json`,{
headers: {
'Api-Key': process.env.DISCOURSE_API_KEY,
'Api-Username': process.env.DISCOURSE_API_USERNAME,
},
});
… أحصل على حالة 404 مع كائن الإرجاع التالي:
{
errors: [ 'The requested URL or resource could not be found.' ],
error_type: 'not_found'
}
تمكنت من تطبيق SSO دون الكثير من المتاعب. أي رؤى حول سبب عدم عمل تسجيل الخروج قد تكون رائعة.
تحياتي.
يبدو هذا جيدًا بالنسبة لي للوهلة الأولى . هل يحمل UserID قيمة صحيحة؟
seanc
(Sean)
17 أبريل 2023، 2:37م
6
نعم، في حالة الاختبار هي 1 (تم الحصول عليها من استدعاء لـ /u/by-external/${user.id}.json). حاولت أيضًا ترميز القيمة بشكل ثابت، فقط للتحقق مرة أخرى… نفس النتيجة.
لقد نقلت المشاركات من الموضوع الآخر هنا للحفاظ على تجميع المناقشة معًا.
عذرًا إذا كان هناك عدم تزامن طفيف.
3 إعجابات
blake
(Blake Erickson)
17 أبريل 2023، 3:03م
9
إحدى الطرق التي يمكنني بها تكرار رسالة الخطأ 404 هي استخدام معرف مستخدم غير صالح. هل يمكنك التحقق من إمكانية جلب المستخدم حسب المعرف أولاً؟
curl -i -sSL -X GET "http://localhost:4200/admin/users/1.json" \
-H "Api-Key: 64b901d2357526d1b6e8c439fd0570f9c585073e6160ae18cc82b7ac358d4893" \
-H "Api-Username: blake.erickson"
HTTP/1.1 200 OK
{
"id": 1,
"username": "blake.erickson",
...
إعجاب واحد (1)
seanc
(Sean)
17 أبريل 2023، 3:29م
10
حسنًا، لقد أكدت أنني أسترد معرف مستخدم صالحًا من Discourse، وهو 1 في هذه الحالة…
{
"id":1,
"username":"Sean",
...
}
ومن المثير للاهتمام، عندما أرسل طلب cURL إلى نقطة النهاية log_out لمعرف المستخدم 1…
curl -i -sS -X POST https://community.site.com/admin/users/1/log_out.json
-H "Content-Type: multipart/form-data"
-H "Api-Key: my-api-key"
-H "Api-Username: Sean"
… أحصل على استجابة 200، مما يشير إلى أنه يجب تسجيل خروج المستخدم 1 (أنا) من المنتدى، ولكن عندما أتحقق، لم يتم تسجيل خروجي بالفعل - هذه هي المشكلة الأولى.
المشكلة الثانية هي أن إرسال نفس الطلب من الواجهة الخلفية لتطبيقي باستخدام axios (مفصل أعلاه) يؤدي إلى 404… غريب جدًا.
تعديل:
المشكلة الأولى ليست مشكلة - طلب cURL يسجل خروجي بنجاح - أحتاج فقط إلى معرفة سبب حصول طلب axios post على 404 الآن.
إعجاب واحد (1)
seanc
(Sean)
17 أبريل 2023، 4:01م
11
حسنًا - تم حل اللغز
اتضح أن طلب axios الخاص بي لم يكن منسقًا بشكل صحيح! نظرًا لأنني لا أرسل أي جسم في طلب post، كان ينبغي عليّ تمرير كائن فارغ مع الطلب.
شكرًا على التوجيه بخصوص طلبات curl @blake - هذا ما حل المشكلة بالنسبة لي في النهاية.
3 إعجابات
مرحباً شون،
هل يمكنك مشاركة كود log_out.json حيث أنني أعمل على طلب مشابه
لقد حاولت تسجيل الخروج من المنتدى باستخدام واجهة برمجة التطبيقات POST ‘admin/users/{user_id}/log_out.json’ ولكنها تُرجع خطأ “Oops! That page doesn’t exist or is private.”
لقد قدمت api_key و api-username ضمن رؤوس الطلب. هل واجه أي شخص نفس المشكلة؟
هل ستحتاج إلى استخدام مفتاح واجهة برمجة تطبيقات مسؤول لهذا النقطة النهائية؟
إعجاب واحد (1)
Canapin
(Coin-coin le Canapin)
6 سبتمبر 2023، 10:34ص
16
لقد سجلت خروجي بنجاح باستخدام واجهة برمجة التطبيقات عن طريق إرسال طلب POST إلى /admin/users/1/log_out.json.
جسم فارغ، ورؤوس تحتوي على اسم مستخدم واجهة برمجة تطبيقات إداري ومفتاح واجهة برمجة تطبيقات بنطاق عالمي أو نطاق مفصل مع تمكين قدرة تسجيل الخروج.
إعجاب واحد (1)
نعم، لقد استخدمت مفتاح واجهة برمجة تطبيقات المسؤول
Canapin
(Coin-coin le Canapin)
6 سبتمبر 2023، 1:08م
18
بأي برنامج أو لغة برمجة قمت بإجراء استدعاء الـ API؟ هل يمكنك نسخ ولصق الكود الخاص بك هنا؟