Passer au contenu principal

WeChat MiniProgram

info

Casdoor prend désormais en charge WeChat Mini Program à partir de la version 1.41.0.

Introduction

Comme WeChat Mini Program ne prend pas en charge OAuth standardisé, il ne peut pas rediriger vers la page Web auto-hébergée de Casdoor pour la connexion. Par conséquent, le processus d'utilisation de Casdoor pour WeChat Mini Program est différent de celui des programmes réguliers.

Ce document expliquera comment intégrer Casdoor dans WeChat Mini Program. Vous pouvez trouver un exemple pour cette intégration sur GitHub ici : casdoor-wechat-miniprogram-example. Pour plus d'informations détaillées, veuillez vous référer au document de connexion de WeChat Mini Program login document.

La configuration comprend les noms suivants :

CASDOOR_HOSTNAME : Le nom de domaine ou l'adresse IP où le serveur Casdoor est déployé, par exemple, https://door.casbin.com.

Étape 1 : Déployer Casdoor

Tout d'abord, le serveur Casdoor doit être déployé.

Après avoir déployé avec succès Casdoor, vous devez vous assurer que :

  1. Casdoor peut être accédé et utilisé normalement.
  2. Définissez la valeur origin de Casdoor (conf/app.conf) sur CASDOOR_HOSTNAME. Configuration de Casdoor

Étape 2 : Configurer l'application Casdoor

  1. Créez un IDP WeChat dans Casdoor et fournissez le APPID et le APPSECRET qui vous ont été donnés par la plateforme de développement de WeChat Mini Program. WeChat_MiniProgram.png
  2. Créez une nouvelle application Casdoor ou utilisez-en une existante.
  3. Ajoutez l'IDP créé à l'étape précédente à l'application que vous souhaitez utiliser.
Tips

Pour plus de commodité, Casdoor traitera par défaut le premier IDP de type WeChat dans l'application comme l'IDP WeChat Mini Program.

Par conséquent, si vous souhaitez utiliser WeChat Mini Program dans cette application, n'ajoutez pas plusieurs IDP de type WeChat dans une seule application.

Étape 3 : Écrire le code WeChat MiniProgram

WeChat Mini Program fournit une API pour se connecter en interne et obtenir le code. Le code doit ensuite être envoyé à Casdoor. Casdoor utilisera ce code pour récupérer des informations (telles que OpenID et SessionKey) du serveur WeChat.

Le code suivant montre comment accomplir le processus ci-dessus :

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

Il est important de noter que le paramètre tag est obligatoire pour informer Casdoor qu'il s'agit d'une demande de WeChat Mini Program.

Le code ci-dessus inclut le nom d'utilisateur et l'URI de l'avatar de l'utilisateur WeChat Mini Program lors de la connexion. Vous pouvez choisir de passer ces deux paramètres séparément, puis de les transmettre à Casdoor après une connexion réussie et l'obtention du jeton d'accès :

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

De plus, vous pouvez utiliser le jeton d'accès comme un jeton porteur pour toute opération Casdoor dont vous avez besoin.

Tips

Actuellement, Casdoor est incapable de lier des comptes existants aux utilisateurs de WeChat Mini Program. Après que Casdoor ait récupéré l'OpenID de WeChat, il créera soit un nouvel utilisateur si l'ID n'existe pas, soit utilisera l'utilisateur existant s'il existe.