هل يمكنني استخدام واجهة برمجة تطبيقات Discourse لمصادقة المستخدمين في تطبيق آخر؟

إليك 20 سطرًا من كود بايثون تقوم بنفس الشيء تقريبًا مثل كود React Native المشار إليه بواسطة @renato (باستثناء عدم وجود توافق مع Discourse 2.5 - لا أحتاج إلى ذلك)

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

import requests
import json

def discourse_authenticate(url, name, password):
    session = requests.Session()
    session.headers.update({'X-Requested-With': 'XMLHttpRequest'})
    r1 = session.get(url + '/session/csrf')
    csrf_token = json.loads(r1.text).get('csrf')
    r2 = session.post(url + '/session',
        data={
            'login': name,
            'password': password,
            'authenticity_token': csrf_token,
        },
    )
    if r2.status_code != 200:
        return None
    return json.loads(r2.text)