ضرورة المساعدة في تحديث معلومات الملف الشخصي عبر API

لقد وجدت بعض الأمثلة في هذه المنتديات لتحديث معلومات المستخدم عبر واجهة برمجة التطبيقات (API) ولكن لا يمكنني جعلها تعمل. أنا مطور مبتدئ لذا ربما فاتني شيء واضح.

أولاً، حاولت تشغيل هذا المثال:
curl -X PUT -d 'name=new name’ -L 'https://mysite.com/users/user12345.json?api_key=mykey\u0026api_username=username'

ولكنني أحصل على [“BAD CSRF”] لذا حاولت هذا:

curl -X PUT \
  -H "Content-Type: multipart/form-data" \
  -H "Api-Key: mykey" \
  -H "Api-Username: username" \
  -d '{"name”: “new name"}' \
  -L 'https://mysite.com/users/user12345.json'

هذا يعيد “success”:“OK”، متبوعًا بجميع ملفات JSON الخاصة بالمستخدم ولكن لا يقوم بأي تحديثات فعليًا.

هل فاتني شيء؟

في ملاحظة ذات صلة: هل يمكنك تحديث اسم المستخدم باستخدام نفس النهج؟

شكراً لمساعدتكم.

نعم، تم إهمال هذه الطريقة لصالح تمرير بيانات الاعتماد في الرأس (كما هو موضح أدناه).

لقد خلطت بين علامات الاقتباس: \" و . قد يكون هذا هو السبب هنا. :thinking:

4 إعجابات

شكراً @Arkshine. لقد تأكدت من أن جميع علامات الاقتباس متطابقة \" ولكنها لا تزال لا تعمل.

لا يمكنني معرفة ما هي المشكلة.

هل جربت Reverse engineer the Discourse API للتحقق مما يحدث عند استخدام واجهة المستخدم لإجراء التغيير؟

يعمل هذا بالنسبة لي عند إرسال طلب PUT إلى على سبيل المثال /u/test_one.json

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

شكراً @JammyDodger. لقد فعلت كما اقترحت وقمت بتحديث الاسم في واجهة المستخدم الإدارية ثم نظرت في علامة تبويب الشبكة. كما ذكرت، يتم التحديث في عنوان URL مختلف (/u بدلاً من /users)، ولكن عندما أقوم بتغيير عنوان URL، لا يزال الأمر لا يعمل.

ضمن “بيانات النموذج”، أنظر إلى الطلب وهو: name: "newname" تمامًا كما أرسلته.

على حد علمي، كل شيء يبدو صحيحًا ولا يزال لا يتم التحديث. حائر.

حسناً… لقد أمضيت وقتاً أطول بكثير في البحث في المنتديات ووجدت مشكلة مماثلة منذ 7 سنوات. اتضح أنه إذا قمت بتحديث نوع المحتوى إلى “application/json; charset=utf-8” فإنه يعمل!

لدي مشكلة أخيرة: كيف يمكنني تحديث اسم المستخدم عبر واجهة برمجة التطبيقات؟

لقد حاولت القيام بشيء كهذا ولكنه لا يعمل:

-d '{\"name”: “new name\", \"username\": \"new username\"}' \\

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

حسنًا… لقد تمكنت أخيرًا من حل هذه المشكلة. سأترك ملخصًا صغيرًا هنا في حال كان شخص ما في المستقبل يبحث عن كيفية القيام بذلك. الإجابات الأخرى التي وجدتها في المنتديات كانت قديمة.

لتحديث الاسم عبر واجهة برمجة التطبيقات (API):
curl -X PUT -H \"Content-Type: application/json; charset=utf-8\" -H \"Api-Key: mykey\" -H \"Api-Username: username\" -d '{\"name\": “mynewname\"}' -L 'https://mysite.com/u/user12345.json'

لتحديث اسم المستخدم عبر واجهة برمجة التطبيقات (API):
curl -X PUT -H \"Content-Type: application/json; charset=utf-8\" -H \"Api-Key: myapikey\" -H \"Api-Username: username\" -d '{\"new_username\": \"mynewusername\"}' -L 'https://mysite.com/u/user12345/preferences/username.json'

4 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.