أتبع الإرشادات الخاصة بالحصول على مفاتيح API لكل مستخدم: User API keys specification.
لقد اتبعت الخطوات: يقوم العميل بتوليد زوج من المفاتيح العامة/الخاصة وعنوان URL للإرجاع، ثم ينتقل إلى مسار في discourse، ويوافق المستخدم على استخدام التطبيق من قبل discourse، فيقوم discourse بتوليد مفتاح API.
ولكن عندما يرسل discourse مفتاح API مرة أخرى كـ “حمولة” (payload) في عنوان URL للإرجاع، فإن هذا المفتاح لا يعمل. أحاول فك تشفيره لكنني لا أستطيع.
أستخدم هذا المفتاح في بعض خوارزميات فك التشفير القياسية في JavaScript (مثل تلك الموجودة في الإجابة هنا)، فأحصل على خطأ “الطول غير صالح” (أو DATA_LEN_NOT_EQUAL_TO_MOD_LEN، اعتمادًا على طريقة فك التشفير في JavaScript التي أستخدمها).
هل لديك أي أفكار حول كيفية معالجة هذه المشكلة؟
هذه وظيفة حاسمة، لذا فإن أي مساعدة مُقدَّرة للغاية.
هل أحتاج إلى تغيير المفتاح المقدم في الحمولة بطريقة ما؟ هل من الممكن أن المفتاح المقدم في الحمولة لا يعمل؟
بعض التفاصيل الإضافية:
أعتقد أن طريقتي العامة صحيحة، لأن discourse توفر طريقة أخرى للحصول على مفتاح لكل مستخدم، وأستطيع فك تشفير ذلك المفتاح بنجاح:
إذا تركت عنوان URL لإعادة التوجيه خارج الطلب الموجه إلى discourse، فلن يقوم discourse بإعادة التوجيه. بدلاً من ذلك، يطبع المفتاح على الشاشة ليتمكن المستخدم من نسخه.
هذا المفتاح أقصر من المفتاح المقدم في “الحمولة” (حوالي 684 حرفًا، بينما مفتاح الحمولة حوالي 762 حرفًا). وهذا المفتاح يعمل — أستطيع فك تشفيره بسهولة باستخدام JavaScript.
لكن طلب من المستخدم نسخ ولصق مفتاح API أمر محير للمستخدمين — التدفق الصحيح هو الحصول على المفتاح من الحمولة. كيف يمكنني جعل مفتاح الحمولة يعمل؟