عندما أستخدم API مباشرة، يمكنني الوصول إلى معرف المصادقة الخارجي للمستخدم دون أي مشكلة:
GET /admin/users/{id}.json
ومع ذلك، عندما أحاول استخدام واجهة برمجة تطبيقات JavaScript، لا يمكنني الحصول على نفس البيانات للمستخدم الحالي. في الواقع، currentUser لا تُرجع أي بيانات للمعّرفات الخارجية:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.5.0", api => {
const currentUser = api.getCurrentUser();
if (currentUser) {
const userOAuthID = currentUser?.external_ids?.oauth2_basic;
console.log("userOAuthID:", userOAuthID); // null
}
});
كيف يمكنني الوصول إلى المعرف الخارجي لـ currentUser عبر جافاسكريبت؟
السياق
أحاول دفع المعرف الخارجي للمستخدم الحالي إلى window.dataLayer.
يبدو أنك تحاول الحصول على user_associated_account.provider_uid الخاص بالمستخدم. من خلال النظر إلى الكود، هناك إعداد موقع مخفي تحتاج إلى تمكينه للتسبب في إرجاع associated_account_ids من CurrentUserSerializer: