إليك 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)