Перейти до основного вмісту

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 буде розглядати перший WeChat тип IDP у додатку за замовчуванням як IDP WeChat Mini Program.

Тому, якщо ви хочете використовувати WeChat Mini Program у цьому додатку, не додавайте кілька WeChat типів IDP в один додаток.

Крок 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 не існує, або використовуватиме існуючого користувача, якщо він існує.