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

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

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

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

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

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

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

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

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

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

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

إعجابَين (2)

You can create a user with custom fields via the API by passing in user_fields[1] like this:

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"

image

And you can update them by sending a PUT request to /u/<username>.json

7 إعجابات

/admin/customize/user_fields is a UI page where the custom user fields are configured.

3 إعجابات

Thank you for all of this help! FWIW I’d love to see the ability to refer to user_fields by their name (seems much less brittle?) but this explanation and info you’ve provided me is enormously helpful. I appreciate it :slight_smile:

إعجاب واحد (1)

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

إعجابَين (2)

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

إعجاب واحد (1)

يمكنك إجراء طلب 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
    }
  ]
}
5 إعجابات

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

إعجابَين (2)