أفاتار خارج الموقع عبر API؟

لدي موقع مجتمعي مبني على Rails. أستخدم SSO حتى لا يضطر أعضاء المجتمع لتسجيل الدخول بشكل منفصل إلى Discourse، وأستخدم واجهة برمجة تطبيقات Discourse لتسهيل تبادل المعلومات بين الخادمين. الآن أرغب في توحيد صور المستخدمين (الأفاتار)، أي استخدام نفس الصورة في المنتدى كما في موقعي الرئيسي. كيف يمكنني فعل ذلك؟

لقد جربت ما أعتاد فعله عادةً لطلبات الواجهة البرمجية، وهو طلب POST باستخدام مكتبة Faraday إلى https://discuss.diem25.org/uploads.json مع مفتاح الواجهة البرمجية واسم المستخدم في الرأس، مع جسم الطلب التالي:

{ 
          "type": "avatar", 
          "user_id": user_id,
          "file": "https://internal.diem25.org/.../user.jpg",
          "synchronous": "true"
        }

يؤدي هذا الطلب إلى خطأ داخلي في الخادم (Internal Server Error). كما أنني لست ضد إعادة رفع الملف كحل أخير، لكن يبدو ذلك صعبًا أو مستحيلًا للوهلة الأولى باستخدام Faraday.

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

لماذا لا تجرب إعداد الموقع sso overrides avatar وتعبر عن رابط الصورة الرمزية عبر نظام SSO؟ قد يكون من الأفضل معالجة ذلك عبر SSO بدلاً من رفع الصور يدويًا باستخدام واجهة برمجة التطبيقات.

5 إعجابات

شكرًا لك، إنها فكرة جيدة، لكنها تطرح مشكلة التكامل من زاوية أخرى، لأن بعض المستخدمين لديهم صورة شخصية على Discourse وليس لديهم صورة شخصية على موقعي. لذا، يبدو أن خياراتي هي إما رفع جميع الصور الشخصية من Discourse إلى موقعي ثم تفعيل خيار “يتجاوز SSO الصورة الشخصية”، أو رفع جميع صوري الشخصية إلى Discourse. :unamused:

3 إعجابات

أعتقد أن السبب هو أنه لا يمكنك ببساطة تحديد عنوان URL لملف في Faraday، بل يجب قراءته كملف أولاً، أو شيء من هذا القبيل.

ومع ذلك، يمكنك استخدام مكتبة discourse_api لتحديث الصورة الرمزية عن طريق تحديد عنوان URL:

client.update_avatar(
  username: "norbert6",
  url: "http://vignette1.wikia.nocookie.net/despicableme/images/1/15/Jerryindespicableme.png"
)
إعجابَين (2)