Um Miniprogrammanwendungen die Verwendung des WeChat-Anmeldestatus für autorisierte Anmeldungen zu erleichtern, bietet das WeChat-Miniprogramm eine offene Schnittstelle für die Anmeldeautorisierung. Auf den ersten Blick finde ich das Dokument sehr vernünftig, aber was die Umsetzung angeht, ist es wirklich verwirrend und ich weiß nicht, wie ich den Anmeldestatus verwalten und pflegen soll. In diesem Artikel erfahren Sie Schritt für Schritt, wie Sie im Unternehmen auf den WeChat-Anmeldestatus zugreifen und diesen beibehalten.
Zugriffsprozess
Das Flussdiagramm im offiziellen Dokument hier ist klar genug, daher werden wir es direkt ausarbeiten und ergänzen.
Wenn Sie dieses Bild sehen, werden Sie auf jeden Fall bemerken, dass das Miniprogramm nicht nur mit dem Miniprogramm-Frontend und unserem eigenen Server kommuniziert und interagiert. Aber auch der WeChat-Server eines Drittanbieters ist ebenfalls beteiligt. Welche Rolle spielt der WeChat-Server dabei? Lassen Sie uns gemeinsam den Login-Authentifizierungsprozess durchgehen und wir werden es verstehen.
1. Rufen Sie wx.login auf, um Code zu generieren
Die Funktion der wx.login()-API besteht darin, temporäre Anmeldeinformationen für den aktuellen Benutzer zu generieren Die Anmeldedaten sind nur fünf Minuten lang gültig. Nachdem wir diese Anmeldeinformationen erhalten haben, können wir mit dem nächsten Schritt fortfahren: openid und session_key abrufen
openid und session_key abrufen
Lassen Sie uns zunächst openid vorstellen Schuhe, die öffentliche Konten verwendet haben, sollten mit diesem Logo vertraut sein. Auf der öffentlichen Plattform wird es verwendet, um die eindeutige Identität jedes Benutzers in drei verschiedenen Anwendungen zu identifizieren: Abonnementkonto, Dienstkonto und Miniprogramm openid ist in jeder Anwendung inkonsistent, sodass wir im Miniprogramm openid verwenden können, um die Einzigartigkeit des Benutzers zu identifizieren. Wofür wird session_key verwendet? Mit der Benutzer-ID müssen wir dem Benutzer die Anmeldung ermöglichen. Anschließend stellt der Sitzungsschlüssel die Gültigkeit des Sitzungsvorgangs des aktuellen Benutzers sicher. Dieser Sitzungsschlüssel wird vom WeChat-Server an uns verteilt. Mit anderen Worten: Wir können diesen Bezeichner verwenden, um indirekt den Anmeldestatus unserer Applet-Benutzer aufrechtzuerhalten. Wie haben wir diesen Sitzungsschlüssel erhalten? Wir müssen die von WeChat bereitgestellte Drittanbieterschnittstelle https://api.weixin.qq.com/sns/jscode2session auf unserem eigenen Server anfordern. Diese Schnittstelle muss vier Parameterfelder mitbringen:
Sie können sehen, dass wir den sha1-Algorithmus verwendet haben, um einen Schlüssel zu generieren:
wx.login({ success: function(loginRes) { if (loginRes.code) { // example: 081LXytJ1Xq1Y40sg3uJ1FWntJ1LXyth } } });
checkSession
前面我们将skey存入前端的storage里,每次进行用户数据请求时会带上skey,那么如果此时session_key过期呢?所以我们需要调用到wx.checkSession()这个API来校验当前session_key是否已经过期,这个API并不需要传入任何有关session_key的信息参数,而是微信小程序自己去调自己的服务来查询用户最近一次生成的session_key是否过期。如果当前session_key过期,就让用户来重新登录,更新session_key,并将最新的skey存入用户数据表中。
checkSession这个步骤呢,我们一般是放在小程序启动时就校验登录态的逻辑处,这里贴个校验登录态的流程图:
下面代码即校验登录态的简单流程:
let loginFlag = wx.getStorageSync(\'skey\'); if (loginFlag) { // 检查 session_key 是否过期 wx.checkSession({ // session_key 有效(未过期) success: function() { // 业务逻辑处理 }, // session_key 过期 fail: function() { // session_key过期,重新登录 doLogin(); } }); ) else { // 无skey,作为首次登录 doLogin(); }
推荐:《小程序开发教程》
Das obige ist der detaillierte Inhalt vonWie greift das Miniprogramm auf den WeChat-Anmeldestatus zu und verwaltet ihn?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!