Pular para o conteúdo principal

WeChat MiniProgram

informação

O Casdoor agora suporta WeChat Mini Program a partir da versão 1.41.0.

Introdução

Como o WeChat Mini Program não suporta OAuth padronizado, ele não pode redirecionar para a página de login do Casdoor hospedada pelo próprio usuário. Portanto, o processo de usar o Casdoor para WeChat Mini Program é diferente daquele de programas regulares.

Este documento explicará como integrar o Casdoor no WeChat Mini Program. Você pode encontrar um exemplo desta integração no GitHub aqui: casdoor-wechat-miniprogram-example. Para mais informações detalhadas, por favor, consulte o documento de login do WeChat Mini Program.

A configuração inclui os seguintes nomes:

CASDOOR_HOSTNAME: O nome de domínio ou endereço IP onde o servidor Casdoor está implantado, por exemplo, https://door.casbin.com.

Passo 1: Implantar o Casdoor

Primeiramente, o servidor Casdoor deve ser implantado.

Após implantar com sucesso o Casdoor, você precisa garantir:

  1. O Casdoor pode ser acessado e usado normalmente.
  2. Defina o valor de origin do Casdoor (conf/app.conf) para CASDOOR_HOSTNAME. Configuração do Casdoor

Passo 2: Configurar Aplicação Casdoor

  1. Crie um IDP WeChat no Casdoor e forneça o APPID e APPSECRET fornecidos pela plataforma de desenvolvimento do WeChat Mini Program. WeChat_MiniProgram.png
  2. Crie uma nova aplicação Casdoor ou use uma existente.
  3. Adicione o IDP criado no passo anterior à aplicação que deseja usar.
Tips

Para conveniência, o Casdoor tratará o primeiro IDP do tipo WeChat na aplicação como o IDP do WeChat Mini Program por padrão.

Portanto, se você deseja usar o WeChat Mini Program nesta aplicação, não adicione vários IDPs do tipo WeChat em uma única aplicação.

Passo 3: Escrever Código WeChat MiniProgram

O WeChat Mini Program fornece uma API para fazer login internamente e obter o código. O código deve então ser enviado ao Casdoor. O Casdoor usará este código para recuperar informações (como OpenID e SessionKey) do servidor WeChat.

O código a seguir demonstra como realizar o processo acima:

// 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.