Перейти к основному содержанию

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)
}
})
}
})

Кроме того, вы можете использовать токен доступа как токен типа bearer для любой операции Casdoor, которая вам требуется.

Tips

В настоящее время Casdoor не может связать существующие аккаунты с пользователями WeChat Mini Program. После того как Casdoor получит OpenID от WeChat, он либо создаст нового пользователя, если ID не существует, либо использует существующего пользователя, если он есть.