Pular para o conteúdo principal

WeChat mini program

informação

WeChat Mini Program support is available from Casdoor 1.41.0.

WeChat Mini Program does not use standard OAuth redirects, so sign-in uses the mini program’s login code sent to Casdoor instead of a redirect to the Casdoor page. Example: casdoor-wechat-miniprogram-example. See also WeChat Mini Program login.

Config: CASDOOR_HOSTNAME — the Casdoor server URL (e.g. https://door.casbin.com).

Passo 1: Implantar o Casdoor

Deploy the Casdoor server. Then:

  1. Confirm Casdoor is reachable and working.
  2. In conf/app.conf, set origin to CASDOOR_HOSTNAME.

Configuração do Casdoor

Step 2: Configure the application

  1. In Casdoor, create an OAuth provider with type WeChat and set APPID and APPSECRET from the WeChat Mini Program admin. WeChat_MiniProgram.png
  2. Create or edit a Casdoor application and add that WeChat provider.
Casdoor uses the first WeChat-type provider in the application as the Mini Program IdP. Use only one WeChat provider per app if you use Mini Program.

Step 3: Mini program code

The mini program calls wx.login() to get a login code, then sends that code to Casdoor. Casdoor exchanges it with WeChat for OpenID and SessionKey. Example:

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

É importante notar que o parâmetro tag é obrigatório para informar ao Casdoor que esta é uma solicitação do WeChat Mini Program.

O código acima inclui o nome de usuário e o URI do avatar do usuário do WeChat Mini Program durante o login. Você pode optar por passar esses dois parâmetros separadamente e depois enviá-los ao Casdoor após um login bem-sucedido e a obtenção do token de acesso:

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

Além disso, você pode usar o token de acesso como um token bearer para qualquer operação do Casdoor que você necessitar.

Tips

Atualmente, o Casdoor é incapaz de vincular contas existentes a usuários do WeChat Mini Program. Após o Casdoor recuperar o OpenID do WeChat, ele criará um novo usuário se o ID não existir, ou usará o usuário existente se ele existir.