الغرض: أريد أن تربط الملفات التعريفية في موقعي الرئيسي بالملفات التعريفية في موقع Discourse الخاص بي. المشكلة هي أنني في البداية لم أكن أستخدم SSO، لذا فإن أسماء المستخدمين غير متسقة بين موقعي، ويتم تحديثها عند تسجيل الخروج/الدخول. حاولت “إفراغ” معرفات المستخدمين القديمة فقط لأدرك أنه لا توجد نقطة نهاية (endpoint) لي لتحديث أسماء المستخدمين (يمكنك فقط تحديث البريد الإلكتروني والصورة الرمزية).
نظرًا لأن أسماء المستخدمين تتغير، قمت بتخزين id بدلاً من ذلك، لكنني أدركت الآن أنني لا أستطيع إنشاء رابط URL مباشرة للوصول إلى ملفهم التعريفي باستخدام المعرف. سيتعين علي إجراء طلبات ويب إضافية وهو ما أحاول تجنبه. وإلا، أعتقد أنني يجب أن أستخدم نقطة نهاية by-external مرة واحدة للحصول على اسم المستخدم، لكن إعادة التوجيه ستكون مثالية.
Thanks but no, I want any user viewing a profile on my main site, to be able to click a link on that page to take them to the corresponding profile on the discourse page.
It would be great if there were a PUT endpoint for username. The use case is sites like mine which transitioned to SSO, to get all the usernames synced. Then my plan A would have just worked.
My fallback plan I think is going to be to add another column to store discourse_username also in my DB along with discourse_id. This way, I can directly to their profile with username. The downside is that this username can change. So I need to daily scan all users to re-sync.
You can make a POST request to /admin/users/sync_sso for this. If you are using the Discourse API gem, you can use the gem’s sync_sso method for this. If you are not using the gem, see Sync DiscourseConnect user data with the sync_sso route for details about setting up the request.