Zum Hauptinhalt springen

WeChat MiniProgram

Info

Casdoor unterstützt nun ab Version 1.41.0 das WeChat Mini Program.

Einführung

Da das WeChat Mini Program keinen standardisierten OAuth unterstützt, kann es nicht zur selbst gehosteten Casdoor-Webseite für die Anmeldung umleiten. Daher unterscheidet sich der Prozess der Verwendung von Casdoor für das WeChat Mini Program von dem regulärer Programme.

Dieses Dokument wird erklären, wie man Casdoor in das WeChat Mini Program integriert. Hier finden Sie ein Beispiel für diese Integration auf GitHub: casdoor-wechat-miniprogram-example. Weitere detaillierte Informationen finden Sie bitte im WeChat Mini Program Login-Dokument.

Die Konfiguration umfasst die folgenden Namen:

CASDOOR_HOSTNAME: Der Domainname oder die IP-Adresse, auf der der Casdoor-Server bereitgestellt ist, z.B. https://door.casbin.com.

Schritt 1: Casdoor bereitstellen

Zuerst sollte der Casdoor-Server bereitgestellt werden.

Nach erfolgreicher Bereitstellung von Casdoor müssen Sie sicherstellen:

  1. Casdoor kann normal zugegriffen und verwendet werden.
  2. Setzen Sie den origin-Wert von Casdoor (conf/app.conf) auf CASDOOR_HOSTNAME. Casdoor-Konfiguration

Schritt 2: Casdoor-Anwendung konfigurieren

  1. Erstellen Sie eine WeChat-IDP in Casdoor und geben Sie die von der WeChat Mini Program-Entwicklungsplattform bereitgestellten APPID und APPSECRET an. WeChat_MiniProgram.png
  2. Erstellen Sie eine neue Casdoor-Anwendung oder verwenden Sie eine vorhandene.
  3. Fügen Sie die im vorherigen Schritt erstellte IDP der Anwendung hinzu, die Sie verwenden möchten.
Tips

Zur Vereinfachung wird Casdoor die erste WeChat-Typ-IDP in der Anwendung standardmäßig als WeChat Mini Program-IDP behandeln.

Daher, wenn Sie das WeChat Mini Program in dieser App verwenden möchten, fügen Sie nicht mehrere WeChat-Typ-IDPs in einer App hinzu.

Schritt 3: WeChat MiniProgram-Code schreiben

WeChat Mini Program bietet eine API, um sich intern anzumelden und den Code zu erhalten. Der Code sollte dann an Casdoor gesendet werden. Casdoor wird diesen Code verwenden, um Informationen (wie OpenID und SessionKey) vom WeChat-Server abzurufen.

Der folgende Code zeigt, wie man den obigen Prozess durchführt:

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

Es ist wichtig zu beachten, dass der tag-Parameter obligatorisch ist, um Casdoor zu informieren, dass dies eine Anfrage vom WeChat Mini Program ist.

Der obige Code beinhaltet den Benutzernamen und die Avatar-URI des WeChat Mini Program-Benutzers während der Anmeldung. Sie können wählen, diese beiden Parameter separat zu übergeben und sie dann nach einer erfolgreichen Anmeldung und dem Erhalt des Zugriffstokens an Casdoor weiterzugeben:

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

Zusätzlich können Sie das Zugriffstoken als Bearer-Token für jede Casdoor-Operation verwenden, die Sie benötigen.

Tips

Derzeit ist Casdoor nicht in der Lage, bestehende Konten an WeChat Mini Program-Benutzer zu binden. Nachdem Casdoor die OpenID von WeChat abgerufen hat, wird entweder ein neuer Benutzer erstellt, wenn die ID nicht existiert, oder der vorhandene Benutzer verwendet, wenn sie existiert.