احصل على عنوان البريد الإلكتروني لمستخدم عبر واجهة برمجة التطبيقات

هل توجد طريقة للحصول على عنوان البريد الإلكتروني الحالي للمستخدم عبر واجهة برمجة التطبيقات (API)؟

حالة الاستخدام لدينا كالتالي:

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

أستطيع القيام بذلك مع جميع الحقول الأخرى باستثناء البريد الإلكتروني.

كان هناك نقطة نهاية (endpoint) في واجهة برمجة التطبيقات تُسمى users/{username}/emails، لكنها لا تبدو متاحة بعد الآن.

مرحبًا،

GET /users/:username.json

ستعرض البريد الإلكتروني في حالتين:

  • إذا كان معرف المستخدم الخاص بحامل مفتاح API مطابقًا لمعرف المستخدم المرتبط باسم المستخدم المطلوب
  • وإذا كان حامل مفتاح API من الموظفين وكان المستخدم المطلوب في مرحلة الاختبار

اقرأ المزيد حول هذا في الكود:

بحسب علمي، لم يتغير مسار هذا الكود مؤخرًا.

نعم، لكن هذا لا يفيدني. جميع المستخدمين نشطون بالفعل، ولن يتطابق مفتاح API الخاص بالمستخدم.

هذا الطلب يعمل معي:

curl "http://example.com/users/joffreyjaffeux/emails.json" \
     -H 'Api-Username: joffreyjaffeux' \
     -H 'Api-Key: xxx' \
     -H 'Content-Type: application/json; charset=utf-8' \

لكن، هل يعمل إذا كان عنوان URL هو http://example.com/users/paulapostolos/emails.json؟

نعم، يجب أن يعمل هذا بالنسبة لك وللأعضاء الآخرين طالما أن الشرط التالي محقق:

  def can_check_emails?(user)
    is_admin? || (is_staff? && SiteSetting.moderators_view_emails)
  end

لاحظ أن القيام بذلك سيؤدي إلى تسجيل إجراء في سجل الموظفين.

نجح ذلك… كان لدي بعض الأكواد القديمة التي كانت تعمل (الإصدار 1.4 تقريبًا) وكانت تحتوي على طلب من نوع PUT وبدون .json في النهاية. قمت بتعديلها إلى GET وتغيير الرابط، والآن تعمل.

شكرًا لك على المساعدة!