كيفية استرجاع قيمة user_api_keys عبر الواجهة البرمجية

مرحباً @simon، شكراً على ردك. دعني أشرح حالتنا بمزيد من التفصيل.

نحن نبني تطبيقاً للجوال يعتمد على منطق الواجهة الخلفية من نقاط نهاية Discourse. عندما يقوم المستخدم بتسجيل الدخول عبر التطبيق، يتم إرسال بيانات تسجيل الدخول إلى واجهة برمجة تطبيقات Discourse عبر session.json، والتي تُرجع ملف تعريف ارتباط. يتم بعد ذلك استخدام ملف تعريف الارتباط هذا لإعادة توجيه webview إلى /user-api-key/new، مما يطالب المستخدم بالموافقة على التفويض. بعد الموافقة، يتم فك تشفير الحمولة إلى مفاتيح API.

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

سؤالي هو من هذا الموضوع: كيف يمكننا التحقق مما إذا كان المستخدم يمتلك بالفعل user_api_keys وما إذا كانت لا تزال نشطة؟ إذا كانت المفاتيح موجودة ونشطة، فيجب أن يتمكن المستخدم من استخدامها بعد تسجيل الدخول. إذا لم يكن الأمر كذلك، فسيحتاج المستخدم إلى إنشاء user_api_keys جديدة، والتي ستتطلب موافقة في webview.

هذه هي المشكلة الرئيسية التي أواجهها.

حل آخر فكرت فيه، بناءً على منشور من كيفية استرداد قيمة مفاتيح API للمستخدم عبر API، هو تخزين مفاتيح API في قاعدة بيانات تطبيق الجوال الخاص بنا.

لقد أشرت أيضاً إلى المنشور إنشاء مفتاح API للمستخدم بدون موافقة المستخدم - #2 بواسطة simon، والذي نظرت إليه في البداية لتنفيذ مفتاح API. ومع ذلك، تظل المشكلة كما هي: عندما نتحقق من /admin/api/keys، لا يمكننا استرداد قيمة مفاتيح API المحفوظة بالفعل في قاعدة البيانات أو الحصول على مفاتيح API لكل مستخدم. أعتقد أنه لهذا التنفيذ، سنحتاج إلى تخزين مفاتيح API في قاعدة بياناتنا الخاصة.