تنزيل سجل منشورات المستخدم عبر Discourse API؟

مرحبًا،

من أجل الامتثال لالتزاماتنا القانونية، نحتاج إلى وسيلة تسمح للمستخدمين بتحميل سجل منشوراتهم الكامل (وليس مقتطفات) عبر واجهة برمجة تطبيقات Discourse، بحيث يمكن تضمين هذه البيانات عند تقديم المستخدم لطلب الوصول إلى البيانات الشخصية (DSAR) مباشرة إلى موقعنا الإلكتروني / فريقنا القانوني (حتى يحصلوا على سجل كامل لبيانات Last.fm الخاصة بهم وبيانات منشورات Discourse). هل هذا ممكن حاليًا؟ وإذا كان كذلك، ما هي الطريقة الصحيحة للقيام بذلك؟

لقد حاولنا سابقًا القيام بذلك باستخدام نقطة نهاية “إجراءات المستخدم” (Discourse API Docs)، لكن يبدو أنها تُرجع فقط سجلًا جزئيًا من المقتطفات وليس المنشورات الكاملة.

أدرك أن المستخدمين يمكنهم بالفعل تحميل بياناتهم مباشرة من صفحة إعدادات النشاط الخاصة بهم على Discourse، لكنني أخشى أن هذا لن يكون كافيًا لإرضاء فريقنا القانوني (:roll_eyes:) — فهم يصرّون على أن يتم تحميل البيانات من موقعنا الإلكتروني. هل لديكم أي أفكار؟ أنا قلق من أن نضطر إلى إلغاء خطة الاستضافة الخاصة بنا إذا لم نتمكن من حل هذه المشكلة.

شكرًا مقدّمًا على أي مساعدة. :pensive:

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

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

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

كما أشار جاي، يمكن استخدام طلب POST مصادق عليه إلى /export_csv/export_entity.json لإنشاء الأرشيف. للقيام بذلك، يجب استخدام مفتاح API عام لجميع المستخدمين. اضبط اسم المستخدم في الطلب على اسم المستخدم الذي تريد إنشاء الأرشيف له. يجب تزويد الطلب بمعامل entity. يجب تعيين معامل entity إلى user_archive. مع هذا النهج، سيتم إنشاء إشعار للمستخدم. بالنسبة لمعظم المستخدمين، سيتم أيضًا إرسال بريد إلكتروني يحتوي على رابط تحميل، لكنني لا أعتقد أنه يمكن الاعتماد على ذلك - فهذا يعتمد على كيفية تكوين المستخدم لتفضيلات البريد الإلكتروني لديه.

مثال على طلب curl لإنشاء الأرشيف. لقد استبدلت $api_key بمفتاح API عام لجميع المستخدمين في الطلب:

curl -X POST "http://localhost:3000/export_csv/export_entity.json" -H "Api-Username: Ben" -H "Api-Key: $api_key" -F "entity=user_archive"

أنا غير متأكد مما إذا كانت هناك أي طريقة تسمح لك بإنشاء الأرشيف بطريقة تتيح مشاركته دون الحاجة إلى أن يقوم المستخدم بالوصول إلى الإشعار والضغط على رابط التحميل. ربما يمكن تطوير استعلام في مستكشف البيانات يعيد المعلومات. يمكنك بعد ذلك تشغيل استعلام مستكشف البيانات عبر واجهة برمجة التطبيقات. العيب في هذا النهج هو أنه إذا كان هناك أكثر من 10,000 صف من البيانات التي يعيدها الاستعلام، فستحتاج إلى إجراء عدة طلبات للحصول على البيانات. لمزيد من التفاصيل حول نهج مستكشف البيانات، راجع: كيفية تشغيل استعلامات مستكشف البيانات باستخدام واجهة برمجة تطبيقات Discourse.

3 إعجابات

شكرًا لك، سأقوم بتحويل هذه المعلومات إلى فريق التطوير لدينا — نأمل أن نتمكن من حل هذه المشكلة دون صعوبة كبيرة. :crossed_fingers:

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