Disable account confirm emails when creating users via API

إذا تم إنشاء المستخدم فعليًا، فسيكون معرف المستخدم (user_id) موجودًا في الاستجابة. ولكن نظرًا لأنك لا تستطيع العثور على المستخدم في لوحة تحكم المسؤول، فمن المرجح أنه لم يتم إنشاؤه لسبب ما.

أهلاً، إذن أنت تقوم بإنشاء أداة استيراد. لا ترغب في القيام بذلك عبر استدعاءات واجهة برمجة التطبيقات (API)، بل تريد إنشاء نص برمجي للاستيراد وتشغيله مباشرة من داخل حاوية Docker الخاصة بك.

أنصحك بالنظر في أحد الأمثلة العديدة المدرجة في discourse/script/import_scripts at main · discourse/discourse · GitHub

هل لي أن أسأل لماذا؟
(لدي وصول إداري إلى Discourse، لكن ليس إلى خادم الحاويات Docker، لذا سأضطر إلى طلب ذلك من شخص آخر.)

يبدو الأمر كذلك! هل هناك أسباب معروفة لذلك؟ هل يتعلق الأمر بإعدادات معينة؟

إنها أسرع بمئة مرة في حالة الاستيراد الكبير، كما تحصل على وصول مباشر إلى طرق فئة ImportScripts::Base التي تجعل إنشاء المستخدمين والعديد من الأمور الأخرى للاستيراد أمرًا سهلاً للغاية، مثل إنشاء المجموعات والفئات والمواضيع والمنشورات:

يمكنك إنشاء السكربت وطلب منهم تشغيله إذا لزم الأمر.

لا توجد مشاكل معروفة تتعلق بهذا. إليك مثال على طلب curl لإنشاء مستخدم:

curl -i -sS -X POST "http://localhost:3000/users" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: ****" \
-H "Api-Username: system" \
-F "name=cfbcc77ae9f4230d2c25" \
-F "username=cfbcc77ae9f4230d2c25" \
-F "email=cfbcc77ae9f4230d2c25@example.com" \
-F "password=3f348653105f05505f5f1a3ff70ef984" \
-F "active=true" \
-F "user_fields[1]=cfbcc77ae9f4230d2c25" \
-F "user_fields[2]=828c0ec3a76"

والذي يعيد:

{"success":true,"active":false,"message":"\u003cp\u003eأنت على وشك الانتهاء! لقد أرسلنا بريد تفعيل إلى \u003cb\u003ecfbcc77ae9f4230d2c25@example.com\u003c/b\u003e. يرجى اتباع التعليمات الواردة في البريد لتفعيل حسابك.\u003c/p\u003e\u003cp\u003eإذا لم يصل البريد، تحقق من مجلد البريد غير المرغوب فيه.\u003c/p\u003e","user_id":4}

من الممكن أن يكون قد حدث تغيير ما لأن الأمر يبدو وكأن رسائل البريد الإلكتروني تُرسل الآن، لكن المستخدم لا يزال يُنشأ. يبدو أن active=true لم يتم تطبيقها.

يجب أن أعترف أيضًا أنني لا أملك أي معرفة بلغة Ruby :man_facepalming:

لذلك سأحاول التحقيق في مشكلة واجهة برمجة التطبيقات (API) بشكل أعمق. سأحاول تنفيذ استدعاء مشابه لاستدعائك. هناك بضع نقاط تحتاج إلى توضيح:
أ) هل نقطة النهاية هي [mydomain]/users.json؟
ب) هل يجب أن يكون نوع المحتوى "multipart/form-data" أم "application/json"، كما هو مذكور في وثائق واجهة برمجة التطبيقات؟
ج) ما الغرض من "user_fields"؟

نعم، عادةً ما ترغب في إضافة .json إلى جميع المسارات. نعم، يمكنك أيضًا استخدام application/json لنوع المحتوى، وحقول المستخدم اختيارية، لقد كانت مجرد جزء من سكريبت المثال الذي كان لدي بالفعل.

نجح الأمر!

إرسال طلب curl مطابق تمامًا لطلبك (مع بياناتي) أدى إلى إنشاء مستخدم مفعل.
لا أعرف بعد السبب في أنه لم ينجح معي في البداية عندما كنت أُرسل طلبات مشابهة من Postman. سأواصل التحقيق في هذه المشكلة، وسأبلغك هنا إذا عثرت على أي شيء مهم.

شكرًا لك على مساعدتك!

تم حل هذه المشكلة من خلال هذا الالتزام: