أبحث عن إعادة تعيين الصورة الرمزية أثناء استخدام sync_sso (العودة إلى استخدام letter_avatar_proxy).
حاليًا، أقوم بتمرير avatar_force_update=true ولا أضع أي قيمة لـ avatar_url. هل يجب أن أمرر قيمة صريحة (null؟) لـ avatar_url بدلاً من ذلك؟ شكراً مقدماً
بناءً على استعراض كود Discourse SSO، لا أعتقد أنه سيكون من الممكن إعادة تعيين الصورة الرمزية للمستخدم إلى صورة رمزية نصية عن طريق استدعاء sync_sso. ما يفعله الكود هو محاولة تنزيل الصورة الرمزية من عنوان URL الممرر مع معامل avatar_url. إذا تم حذف هذا المعامل، أو تعيينه إلى null، أو سلسلة فارغة، فلن يتم إجراء أي تغيير على الصورة الرمزية للمستخدم.
كيف يمكنني طلب أن يقوم الـ API بمثل هذا الأمر؟ حاولت تطبيق حل بديل لكنه لا يعمل بشكل كامل.
من النهج الجيد لمعرفة استدعاء واجهة برمجة التطبيقات المطلوب لتنفيذ إجراء ما، هو تنفيذ الإجراء عبر واجهة مستخدم Discourse مع مراقبة تبويب الشبكة في مراقب الويب الخاص بك للعثور على تفاصيل حول الطلب الذي يتم إجراؤه. راجع كيفية عكس هندسة واجهة برمجة تطبيقات Discourse للحصول على تفاصيل حول هذا النهج.
يمكن تحديث صور الرموز (avatars) للمستخدمين إلى صورة الرمز الافتراضية للنظام عن طريق إرسال طلب PUT إلى واجهة برمجة التطبيقات:
http://forum.example.com/u/<discourse_username>/preferences/avatar/pick
قم بتعيين type=system في بيانات النموذج الخاصة بالطلب. ستحتاج إلى استبدال عنوان URL الخاص بموقعك واسم مستخدم Discourse الذي تريد تحديثه في الرابط.
إليك مثال على طلب curl من موقعي المحلي. لقد قمت بتعيين $api_key إلى مفتاح واجهة برمجة التطبيقات الخاص بجميع المستخدمين:
curl -X PUT "http://localhost:3000/u/scossar/preferences/avatar/pick" \
-H "Api-Key: $api_key" \
-H "Api-Username: system" \
-H "Content-Type: multipart/form-data;" \
-F "type=system"
من الجدير بالذكر أن هذا الطلب سيفشل إذا قمت بتفعيل إعداد الموقع sso overrides avatar.}
بالغريب، هذا هو الحل البديل الذي جربته، لكنني لاحظت نتائج غير متسقة. سأواصل تجربته قليلاً ثم أعود بالإبلاغ عن النتائج.