كيفية تغيير حقول المستخدم باستخدام API

(تعديل: راجع المنشور الثاني للحصول على الحل: كيفية تغيير حقول المستخدم عبر واجهة برمجة التطبيقات)

@sam، لقد ذكرت (في منشور ضمن موضوع تم إغلاقه الآن) فيما يتعلق بشخص أراد استخدام واجهة برمجة التطبيقات لتحديث حقل مخصص في سجل مستخدم: “يجب أن يكون الحقل مدرجًا في القائمة البيضاء، هل يمكنك إضافته إلى /admin/customize/user_fields أم أن هذا الحقل مخصص ليكون مخفيًا تمامًا عن المستخدمين؟”

سؤالان سريعان:

  1. ما هي نقطة النهاية /admin/customize/؟
  2. كيف تقوم بـ “إدراج حقل في القائمة البيضاء”؟ (ماذا يعني ذلك—إدراجه في القائمة البيضاء بحيث يمكن لواجهة برمجة التطبيقات الوصول إليه، بطريقة ما؟!)

لقد بحثت عن إجابات لكلا السؤالين دون جدوى، آمل أن تتمكن أنت (أو أي شخص آخر يعرف) من المساعدة.

بالمناسبة، يبدو أن هدفي النهائي بسيط: أريد أن أتمكن من تعيين/استرجاع قيمة حقل مستخدم مخصص عبر واجهة برمجة التطبيقات. ومع ذلك، أجد أنه من الصعب للغاية الحصول على إجابة واضحة حول كيفية القيام بذلك. :frowning:

حتى الآن، تمكنت من استنتاج ما يلي:

  1. يمكنك نوعًا ما تمرير الحقول المخصصة عبر SSO، لكن هذا ليس واجهة برمجة التطبيقات.
  2. يبدو أن الحقول المخصصة تُشار إليها فقط بالأرقام، وليس بالأسماء، عندما يقوم الواجهة الأمامية باستدعاء واجهة برمجة التطبيقات (من خلال مراقبة طلب XHR) — وهذا بالطبع يُحدث فرقًا كبيرًا إذا كنت أبحث عنها بالاسم بينما هي في الواقع users[2].

كما ترون، الأمر ليس واضحًا تمامًا :wink: وأعتقد أن عملية “الاسترجاع” أسهل لأنها ستكون جزءًا من سجل المستخدم (الذي يمكنني الحصول عليه الآن عبر واجهة برمجة التطبيقات)، لكنني لا أستطيع التأكد حتى أتمكن من “التعيين” عبر واجهة برمجة التطبيقات.

على أي حال… بمجرد أن أفهم هذا أخيرًا، كيف يمكنني المساهمة بهذه المعرفة بطريقة تساعد الشخص التالي الذي يحاول القيام بذلك؟

يمكنك إنشاء مستخدم مع حقول مخصصة عبر واجهة برمجة التطبيقات عن طريق تمرير user_fields[1] على النحو التالي:

curl -i -sS -X POST "http://localhost:3000/users"  \
-H "Content-Type: multipart/form-data;"  \
-H "Api-Key: d19b5a38ed13745f4c5..."  \
-H "Api-Username: system"  \
-F "name=cbbc7188c201b59ebc06"  \
-F "username=cbbc7188c201b59ebc06"  \
-F "email=cbbc7188c201b59ebc06@example.com"  \
-F "password=b6629ed30b4bc3de32ce452d171540b0"  \
-F "active=true"  \
-F "approved=true"  \
-F "user_fields[1]=a874d830b60"  \
-F "user_fields[2]=732418b131b"

ويمكنك تحديثها عن طريق إرسال طلب PUT إلى /u/<username>.json

/admin/customize/user_fields هي صفحة واجهة المستخدم حيث يتم تكوين حقول المستخدم المخصصة.

شكرًا لك على كل هذه المساعدة! فقط للمعلومية، أود رؤية إمكانية الإشارة إلى حقول المستخدم (user_fields) بناءً على اسمها (يبدو ذلك أقل هشاشة؟)، لكن هذا الشرح والمعلومات التي قدمتها لي مفيدة للغاية. أقدر ذلك كثيرًا :slight_smile:

هل تستخدم نفس نقطة النهاية POST لـ تحديث مستخدم؟ هل جميع الحقول مطلوبة؟

مرحباً! أريد أن أعرف كيف أحصل على فهرس user_fields؟ هل يجب أن أذهب إلى وحدة تحكم الويب وأحصل على الفهرس؟ هل هناك واجهة برمجة تطبيقات للحصول على user_fields؟ عندها يمكنني الحصول على الفهرس. شكراً.

يمكنك إجراء طلب GET إلى /admin/customize/user_fields وسيقوم بإرجاع قائمة بحقول المستخدم:

{
  "user_fields": [
    {
      "id": 2,
      "name": "Favorite OS",
      "description": "What is your favorite Operating System?",
      "field_type": "text",
      "editable": true,
      "required": false,
      "show_on_profile": true,
      "show_on_user_card": true,
      "searchable": false,
      "position": 1
    }
  ]
}

شكرا لك. إجابتك مفيدة جدا لي!