حذف رمز مستخدم بواسطة API

مرحباً!

لدينا تطبيق منتدى Discourse متصل بتطبيقنا عبر SSO. يتم تحديث صور المستخدمين مباشرة من خلاله. ولكن بما أن صورنا تخضع للمراجعة، نحتاج إلى مسح صور المستخدمين من جانب تطبيق Discourse.

هل يمكن تحقيق ذلك عبر واجهة برمجة التطبيقات REST أو من خلال تحسينات آلية SSO؟ لم أتمكن من العثور على هذه المعلومات في الوثائق.

شكراً لكم!

يجب أن تتمكن من استدعاء مسار sync_sso لإعادة مزامنة صورة الملف الشخصي للمستخدم، ولكن يمكنك أيضًا إرسال طلب PUT إلى http://localhost:3000/u/<username>/preferences/avatar/pick مع معرف رفع فارغ

لحذف الصورة الحالية للمستخدم وتعيين صورة حرف له.

@blake خطأ في إرسال هذا الطلب. لقد استخدمت طلب POST.
{
“failed”: “فشل”
}

هل جربت استخدام PUT كما تم التوصية به؟

@pfaffman آسف، لقد استخدمت “put”

يجب عليك استخدام نقطة النهاية sync_sso إذا كانت ميزة sso overrides avatar مفعلة.

نستخدم نقطة نهاية SSO، لكنها تقوم بتحديث صورة الملف الشخصي للمستخدم فقط عند تسجيل الدخول. في حالتنا، نحتاج إلى تحديثها يدويًا.

نعم، لا بأس بذلك. يمكنك إرسال طلب POST إلى نقطة نهاية sync_sso يدويًا في أي وقت.

هل يمكنك إرفاق رابط توثيق واجهة برمجة التطبيقات لذلك نقطة النهاية؟

إليك كود Ruby يمكنك استخدامه والذي يستخدم gem الخاص بـ discourse_api ليكون لديك مرجع. نقطة النهاية sync_sso تختلف قليلاً عن نقاط النهاية الأخرى لأنك تحتاج إلى إرسال حمولة موقعة إليها.

client = DiscourseApi::Client.new('host')
client.api_key = 'api_key'
client.api_username = 'api_username'
puts client.sync_sso(
  sso_secret: 'abcdefghij',
  username: '24db27218ed09205a5a0',
  name: '24db27218ed09205a5a0',
  email: '24db27218ed09205a5a076983bf241ab@example.com',
  external_id: '684',
  avatar_url: 'https://d3bpeqsaub0i6y.cloudfront.net/user_avatar/meta.discourse.org/codinghorror/240/110067_2.png',
)

هل فهمتُ بشكل صحيح أنه يمكننا إرسال POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=...؟
هل معلمات ‘sso’ و’sig’ مماثلة لتلك المستخدمة في تدفق مصادقة SSO؟

لقد حاولت تنفيذ الطلب كما هو موضح أعلاه POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=...، وقد ردّ بـ 200 مع بيانات المستخدم الخاص بي، لكن صورة الملف الشخصي للمستخدم لم يتم تحديثها دون أي أحداث سجل. ما الخطأ الذي أقوم به؟

يجب تضمين api_key و api_username في رأس HTTP، لأن استخدامهما في معلمات الاستعلام أصبح قديماً.

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

لقد استبدلت بيانات اعتماد واجهة برمجة التطبيقات (API) بالعناوين. لم تقم مزامنة الدخول الموحد (SSO) بتحديث صورة المستخدم بالصورة المقدمة. على الرغم من أن مهمة Sidekiq في هذه الدعوة قد اكتملت ولم تكن هناك سجلات للأخطاء أو التحذيرات.

يمكنك تفعيل سجلات SSO التفصيلية في إعدادات الموقع لمعرفة ما إذا كان أي شيء يظهر هناك.

هل عنوان avatar_url الذي تقدمه عامًا؟ سيتطلب موقع Discourse الخاص بك القدرة على الوصول إليه.