التخطي إلى المحتوى الرئيسي

WeChat MiniProgram

معلومات

Casdoor يدعم الآن WeChat Mini Program ابتداءً من الإصدار 1.41.0.

مقدمة

بما أن WeChat Mini Program لا يدعم OAuth الموحد، فإنه لا يمكن إعادة التوجيه إلى صفحة تسجيل الدخول الخاصة بـ Casdoor. لذلك، فإن عملية استخدام Casdoor لـ WeChat Mini Program مختلفة عن تلك الخاصة بالبرامج العادية.

سيشرح هذا المستند كيفية دمج Casdoor في WeChat Mini Program. يمكنك العثور على مثال لهذا الدمج على GitHub هنا: casdoor-wechat-miniprogram-example. لمزيد من المعلومات التفصيلية، يرجى الرجوع إلى وثيقة تسجيل الدخول لـ WeChat Mini Program login document.

تشمل التكوينات الأسماء التالية:

CASDOOR_HOSTNAME: اسم النطاق أو عنوان IP حيث يتم نشر خادم Casdoor، مثل https://door.casbin.com.

الخطوة 1: نشر Casdoor

أولاً، يجب نشر خادم Casdoor.

بعد نشر Casdoor بنجاح، تحتاج إلى التأكد من:

  1. Casdoor يمكن الوصول إليه واستخدامه بشكل طبيعي.
  2. قم بتعيين قيمة origin لـ Casdoor (conf/app.conf) إلى CASDOOR_HOSTNAME. تكوين Casdoor

الخطوة 2: تكوين تطبيق Casdoor

  1. إنشاء معرف WeChat IDP في Casdoor وتقديم APPID و APPSECRET المقدمين لك من قبل منصة تطوير WeChat Mini Program. WeChat_MiniProgram.png
  2. إنشاء تطبيق Casdoor جديد أو استخدام واحد موجود.
  3. أضف IDP الذي تم إنشاؤه في الخطوة السابقة إلى التطبيق الذي تريد استخدامه.
Tips

للتسهيل، سيعامل Casdoor IDP الأول من نوع WeChat في التطبيق كـ WeChat Mini Program IDP افتراضيًا.

لذلك، إذا كنت تريد استخدام WeChat Mini Program في هذا التطبيق، لا تضف عدة IDPs من نوع WeChat في تطبيق واحد.

الخطوة 3: كتابة كود WeChat MiniProgram

WeChat Mini Program يوفر API لتسجيل الدخول داخليًا والحصول على الكود. يجب بعد ذلك إرسال الكود إلى Casdoor. Casdoor سيستخدم هذا الكود لاسترجاع المعلومات (مثل OpenID و SessionKey) من خادم WeChat.

يوضح الكود التالي كيفية إنجاز العملية أعلاه:

// Login in mini program
wx.login({
success: res => {
// This is the login code that needs to be sent to Casdoor
console.log(res.code)

wx.request({
url: `${CASDOOR_HOSTNAME}/api/login/oauth/access_token`,
method: "POST",
data: {
"tag": "wechat_miniprogram", // Required
"client_id": "6825f4f0af45554c8952",
"code": res.code,
"username": this.data.userInfo.nickName, // Update user profile when you log in.
"avatar": this.data.userInfo.avatarUrl,
},
header:{
"content-type": "application/x-www-form-urlencoded",
},
success: res => {
console.log(res)
this.globalData.accessToken = res.data.access_token // Get Casdoor's access token
}
})
}
})

من المهم ملاحظة أن معلمة tag إلزامية لإعلام Casdoor بأن هذا طلب من WeChat Mini Program.

يتضمن الكود أعلاه اسم المستخدم وعنوان URI الصورة الرمزية لمستخدم WeChat Mini Program أثناء تسجيل الدخول. يمكنك اختيار تمرير هذين المعلمتين بشكل منفصل ثم تمريرهما إلى Casdoor بعد تسجيل الدخول بنجاح والحصول على رمز الوصول:

wx.getUserProfile({
desc: 'share your info to Casdoor',
success: (res) => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
console.log(app.globalData.accessToken)
wx.request({
url: `${CASDOOR_HOSTNAME}/api/update-user`, // Casdoor URL
method: "POST",
data: {
"owner": "test",
"name": "wechat-oGk3T5tIiMFo3SazCO75f0HEiE7Q",
"displayName": this.data.userInfo.nickName,
"avatar": this.data.userInfo.avatarUrl
},
header: {
"Authorization": "Bearer " + app.globalData.accessToken, // Bearer token
"content-type": "application/json"
},
success: (res) => {
console.log(res)
}
})
}
})

بالإضافة إلى ذلك، يمكنك استخدام رمز الوصول كرمز حامل لأي عملية Casdoor تحتاجها.

Tips

حاليًا، Casdoor غير قادر على ربط الحسابات القائمة بمستخدمي WeChat Mini Program. بعد أن يسترجع Casdoor الـ OpenID من WeChat، سيقوم إما بإنشاء مستخدم جديد إذا لم يكن الـ ID موجودًا، أو استخدام المستخدم القائم إذا كان موجودًا.