


Informationen zu den Schritten zur Anmeldeauthentifizierung des WeChat-Applets
Jun 22, 2018 pm 03:47 PMDie Anmeldefunktion ist für viele Miniprogramme eine notwendige Funktion. Durch die Anmeldung am System k?nnen wir einige Verhaltensweisen des Benutzers in unseren Miniprogrammen aufzeichnen und den Benutzer im Hintergrund auch vage best?tigen. Im folgenden Artikel werden haupts?chlich relevante Informationen zur Miniprogramm-Anmeldeauthentifizierung vorgestellt. Freunde in Not k?nnen darauf zurückgreifen.
Vorwort
Um Miniprogrammanwendungen die Verwendung des WeChat-Anmeldestatus für autorisierte Anmeldungen zu erleichtern, bietet das WeChat-Miniprogramm die Er?ffnung der Login-Autorisierungsschnittstelle. Auf den ersten Blick finde ich das Dokument sehr sinnvoll, 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 ihn beibehalten. Ich werde im Folgenden nicht n?her darauf eingehen.
Zugriffsprozess
Das Flussdiagramm im offiziellen Dokument hier ist klar genug, wir werden es direkt n?her erl?utern und auffüllen.
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 mit dem WeChat-Drittanbieter-Server 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 dieser API wx.login() besteht darin, einen zu generieren Code für den aktuellen Benutzer. Tempor?re Anmeldeinformationen. Diese tempor?ren Anmeldeinformationen 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
wx.login({ success: function(loginRes) { if (loginRes.code) { // example: 081LXytJ1Xq1Y40sg3uJ1FWntJ1LXyth } } });
2. OpenID und Session_Key abrufen
Kinderschuhe, die ?ffentliche Konten verwendet haben, sollten mit diesem Logo vertraut sein. Auf der ?ffentlichen Plattform wird es verwendet, um das Abonnementkonto jedes Benutzers zu identifizieren. Das Dienstkonto und das Miniprogramm sind die eindeutigen Kennungen von drei verschiedenen Anwendungen. Das hei?t, die OpenID jedes Benutzers in jeder Anwendung ist inkonsistent, sodass wir im Miniprogramm die 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 Drittanbieter-Schnittstelle auf unserem eigenen Server https://api.weixin.qq.com/sns/jscode2session anfordern. Diese Schnittstelle muss vier Parameterfelder mitbringen:
參數 | 值 |
---|---|
appid | 小程序的appid |
secret | 小程序的secret |
js_code | 前面調用wx.login派發(fā)的code |
grant_type | 'authorization_code' |
從這幾個參數,我們可以看出,要請求這個接口必須先調用wx.login()來獲取到用戶當前會話的code。那么為什么我們要在服務端來請求這個接口呢?其實是出于安全性的考量,如果我們在前端通過request調用此接口,就不可避免的需要將我們小程序的appid和小程序的secret暴露在外部,同時也將微信服務端下發(fā)的session_key暴露給“有心之人”,這就給我們的業(yè)務安全帶來極大的風險。除了需要在服務端進行session_key的獲取,我們還需要注意兩點:
session_key和微信派發(fā)的code是一一對應的,同一code只能換取一次session_key。每次調用
wx.login()
,都會下發(fā)一個新的code和對應的session_key,為了保證用戶體驗和登錄態(tài)的有效性,開發(fā)者需要清楚用戶需要重新登錄時才去調用wx.login()
session_key是有失效性的,即便是不調用wx.login,session_key也會過期,過期時間跟用戶使用小程序的頻率成正相關,但具體的時間長短開發(fā)者和用戶都是獲取不到的
function getSessionKey (code, appid, appSecret) { var opt = { method: 'GET', url: 'https://api.weixin.qq.com/sns/jscode2session', params: { appid: appid, secret: appSecret, js_code: code, grant_type: 'authorization_code' } }; return http(opt).then(function (response) { var data = response.data; if (!data.openid || !data.session_key || data.errcode) { return { result: -2, errmsg: data.errmsg || '返回數據字段不完整' } } else { return data } }); }
3. 生成3rd_session
前面說過通過 session_key 來“間接”地維護登錄態(tài),所謂間接,也就是我們需要 自己維護用戶的登錄態(tài)信息 ,這里也是考慮到安全性因素,如果直接使用微信服務端派發(fā)的session_key來作為業(yè)務方的登錄態(tài)使用,會被“有心之人”用來獲取用戶的敏感信息,比如wx.getUserInfo()
這個接口呢,就需要session_key來配合解密微信用戶的敏感信息。
那么我們如果生成自己的登錄態(tài)標識呢,這里可以使用幾種常見的不可逆的哈希算法,比如md5、sha1等,將生成后的登錄態(tài)標識(這里我們統(tǒng)稱為'skey')返回給前端,并在前端維護這份登錄態(tài)標識(一般是存入storage)。而在服務端呢,我們會把生成的skey存在用戶對應的數據表中,前端通過傳遞skey來存取用戶的信息。
可以看到這里我們使用了sha1算法來生成了一個skey:
const crypto = require('crypto'); return getSessionKey(code, appid, secret) .then(resData => { // 選擇加密算法生成自己的登錄態(tài)標識 const { session_key } = resData; const skey = encryptSha1(session_key); }); function encryptSha1(data) { return crypto.createHash('sha1').update(data, 'utf8').digest('hex') }
4. checkSession
前面我們將skey存入前端的storage里,每次進行用戶數據請求時會帶上skey,那么如果此時session_key過期呢?所以我們需要調用到wx.checkSession()
這個API來校驗當前session_key是否已經過期,這個API并不需要傳入任何有關session_key的信息參數,而是微信小程序自己去調自己的服務來查詢用戶最近一次生成的session_key是否過期。如果當前session_key過期,就讓用戶來重新登錄,更新session_key,并將最新的skey存入用戶數據表中。
checkSession這個步驟呢,我們一般是放在小程序啟動時就校驗登錄態(tài)的邏輯處,這里貼個校驗登錄態(tài)的流程圖:
下面代碼即校驗登錄態(tài)的簡單流程:
let loginFlag = wx.getStorageSync('skey'); if (loginFlag) { // 檢查 session_key 是否過期 wx.checkSession({ // session_key 有效(未過期) success: function() { // 業(yè)務邏輯處理 }, // session_key 過期 fail: function() { // session_key過期,重新登錄 doLogin(); } }); ) else { // 無skey,作為首次登錄 doLogin(); }
5. 支持emoji表情存儲
如果需要將用戶微信名存入數據表中,那么就確認數據表及數據列的編碼格式。因為用戶微信名可能會包含emoji圖標,而常用的UTF8編碼只支持1-3個字節(jié),emoji圖標剛好是4個字節(jié)的編碼進行存儲。
這里有兩種方式(以mysql為例):
1.設置存儲字符集
在mysql5.5.3版本后,支持將數據庫及數據表和數據列的字符集設置為 utf8mb4 ,因此可在 /etc/my.cnf 設置默認字符集編碼及服務端編碼格式
// my.cnf [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
設置完默認字符集編碼及服務端字符集編碼,如果是對已經存在的表和字段進行編碼轉換,需要執(zhí)行下面幾個步驟:
設置數據庫字符集為 utf8mb4
ALTER DATABASE 數據庫名稱 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
設置數據表字符集為 utf8mb4
ALTER TABLE 數據表名稱 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
設置數據列字段字符集為 utf8mb4
ALTER TABLE 數據表名稱 CHANGE 字段列名稱 VARCHAR(n) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
這里的 COLLATE 指的是排序字符集,也就是用來對存儲的字符進行排序和比較的, utf8mb4 常用的collation有兩種: utf8mb4_unicode_ci 和 utf8mb4_general_ci ,一般建議使用 utf8mb4_unicode_ci ,因為它是基于標準的 Unicode Collation Algorithm(UCA) 來排序的,可以在各種語言進行精確排序。這兩種排序方式的具體區(qū)別可以參考: What's the difference between utf8_general_ci and utf8_unicode_ci
2.通過使用sequelize對emoji字符進行編碼入庫,使用時再進行解碼
這里是sequelize的配置,可參考 Sequelize文檔
{ dialect: 'mysql', // 數據庫類型 dialectOptions: { charset: 'utf8mb4', collate: "utf8mb4_unicode_ci" }, }
最后
前面講了微信小程序如何接入微信登錄態(tài)標識的詳細流程,那么如何獲取小程序中的用戶數據以及對用戶敏感數據進行解密,并保證用戶數據的完整性,我將在下一篇文章給大家做一個詳細地介紹。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
微信小程序開發(fā)中怎樣實現(xiàn)地址頁面三級聯(lián)動
Das obige ist der detaillierte Inhalt vonInformationen zu den Schritten zur Anmeldeauthentifizierung des WeChat-Applets. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





Das offizielle WeChat-Miniprogramm von Xianyu wurde stillschweigend gestartet. Im Miniprogramm k?nnen Sie private Nachrichten posten, um mit K?ufern/Verk?ufern zu kommunizieren, pers?nliche Informationen und Bestellungen anzuzeigen, nach Artikeln zu suchen usw. Wenn Sie neugierig sind, was ist das Xianyu WeChat Mini? Programm namens? Werfen wir einen Blick darauf. Wie hei?t das Xianyu WeChat-Applet? Antwort: Xianyu, Leerlauftransaktionen, Gebrauchtverk?ufe, Bewertungen und Recycling. 1. Im Miniprogramm k?nnen Sie inaktive Nachrichten posten, mit K?ufern/Verk?ufern über private Nachrichten kommunizieren, pers?nliche Informationen und Bestellungen einsehen, nach bestimmten Artikeln suchen usw. 2. Auf der Seite des Miniprogramms gibt es eine Homepage, in der N?he, Posten Sie Leerlauf, Nachrichten und meine 5 Funktionen. 3. Wenn Sie es nutzen m?chten, müssen Sie die WeChat-Zahlung aktivieren, bevor Sie es kaufen k?nnen.

Implementieren von Kartenumdreheffekten in WeChat-Miniprogrammen In WeChat-Miniprogrammen ist die Implementierung von Kartenumdreheffekten ein h?ufiger Animationseffekt, der die Benutzererfahrung und die Attraktivit?t von Schnittstelleninteraktionen verbessern kann. Im Folgenden wird detailliert beschrieben, wie der Kartenumdrehungseffekt im WeChat-Applet implementiert wird, und relevante Codebeispiele bereitgestellt. Zun?chst müssen Sie in der Seitenlayoutdatei des Miniprogramms zwei Kartenelemente definieren, eines für die Anzeige des vorderen Inhalts und eines für die Anzeige des hinteren Inhalts. Der spezifische Beispielcode lautet wie folgt: <!--index.wxml-. ->&l

Implementieren von Bildfiltereffekten in WeChat-Miniprogrammen Mit der Popularit?t von Social-Media-Anwendungen wenden Menschen immer h?ufiger Filtereffekte auf Fotos an, um den künstlerischen Effekt und die Attraktivit?t der Fotos zu verst?rken. Bildfiltereffekte k?nnen auch in WeChat-Miniprogrammen erzielt werden, wodurch Benutzer interessantere und kreativere Fotobearbeitungsfunktionen erhalten. In diesem Artikel wird erl?utert, wie Bildfiltereffekte in WeChat-Miniprogrammen implementiert werden, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir die Canvas-Komponente im WeChat-Applet verwenden, um Bilder zu laden und zu bearbeiten. Die Canvas-Komponente kann auf der Seite verwendet werden

Um den Dropdown-Menüeffekt in WeChat-Miniprogrammen zu implementieren, sind spezifische Codebeispiele erforderlich. Mit der Popularit?t des mobilen Internets sind WeChat-Miniprogramme zu einem wichtigen Bestandteil der Internetentwicklung geworden, und immer mehr Menschen haben begonnen, darauf zu achten Verwenden Sie WeChat Mini-Programme. Die Entwicklung von WeChat-Miniprogrammen ist einfacher und schneller als die herk?mmliche APP-Entwicklung, erfordert jedoch auch die Beherrschung bestimmter Entwicklungsf?higkeiten. Bei der Entwicklung von WeChat-Miniprogrammen sind Dropdown-Menüs eine h?ufige UI-Komponente, um eine bessere Benutzererfahrung zu erzielen. In diesem Artikel wird detailliert beschrieben, wie der Dropdown-Menüeffekt im WeChat-Applet implementiert wird, und es werden praktische Informationen bereitgestellt

Laut Nachrichten dieser Website vom 31. Oktober und 27. Mai dieses Jahres kündigte die Ant Group den Start des ?Chinese Character Picking Project“ an und leitete kürzlich neue Fortschritte ein: Alipay startete das Miniprogramm ?Chinese Character Picking – Uncommon Characters“. um Sammlungen der Gesellschaft zu sammeln. Seltene Charaktere erg?nzen die Bibliothek seltener Charaktere und bieten unterschiedliche Eingabeerlebnisse für seltene Charaktere, um die Eingabemethode für seltene Charaktere in Alipay zu verbessern. Derzeit k?nnen Benutzer das Applet ?Ungew?hnliche Zeichen“ aufrufen, indem sie nach Schlüsselw?rtern wie ?Aufnehmen chinesischer Zeichen“ und ?Seltene Zeichen“ suchen. Im Miniprogramm k?nnen Benutzer Bilder von seltenen Zeichen einreichen, die vom System nicht erkannt und eingegeben wurden. Nach der Best?tigung nehmen Alipay-Ingenieure zus?tzliche Eintr?ge in die Schriftartenbibliothek vor. Auf dieser Website wurde festgestellt, dass Benutzer im Miniprogramm auch die neueste Eingabemethode zur Wortteilung nutzen k?nnen. Diese Eingabemethode ist für seltene W?rter mit unklarer Aussprache konzipiert. Demontage durch den Benutzer

Das offizielle WeChat-Miniprogramm von Xianyu wurde stillschweigend gestartet. Es bietet Benutzern eine praktische Plattform, die es ihnen erm?glicht, ungenutzte Artikel einfach zu ver?ffentlichen und zu handeln. Im Miniprogramm k?nnen Sie über private Nachrichten mit K?ufern oder Verk?ufern kommunizieren, pers?nliche Informationen und Bestellungen einsehen und nach den gewünschten Artikeln suchen. Wie genau hei?t Xianyu im WeChat-Miniprogramm? Dieses Tutorial stellt es Ihnen im Detail vor. Benutzer, die es wissen m?chten, folgen bitte diesem Artikel und lesen Sie weiter! Wie hei?t das Xianyu WeChat-Applet? Antwort: Xianyu, Leerlauftransaktionen, Gebrauchtverk?ufe, Bewertungen und Recycling. 1. Im Miniprogramm k?nnen Sie inaktive Nachrichten posten, mit K?ufern/Verk?ufern über private Nachrichten kommunizieren, pers?nliche Informationen und Bestellungen einsehen, nach bestimmten Artikeln suchen usw. 2. Auf der Seite des Miniprogramms gibt es eine Homepage, in der N?he, Post-Leerlauf, Nachrichten und meine 5 Funktionen;

WeChat-Applet implementiert Bild-Upload-Funktion Mit der Entwicklung des mobilen Internets ist das WeChat-Applet zu einem unverzichtbaren Bestandteil des Lebens der Menschen geworden. WeChat-Miniprogramme bieten nicht nur eine Fülle von Anwendungsszenarien, sondern unterstützen auch vom Entwickler definierte Funktionen, einschlie?lich Funktionen zum Hochladen von Bildern. In diesem Artikel wird erl?utert, wie die Bild-Upload-Funktion im WeChat-Applet implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. 1. Vorbereitende Arbeiten Bevor wir mit dem Schreiben von Code beginnen, müssen wir die WeChat-Entwicklertools herunterladen und installieren und uns als WeChat-Entwickler registrieren. Gleichzeitig müssen Sie auch WeChat verstehen

Verwenden Sie das WeChat-Applet, um den Karussellwechseleffekt zu erzielen. Das WeChat-Applet ist eine leichtgewichtige Anwendung, die einfach und effizient zu entwickeln und zu verwenden ist. In WeChat-Miniprogrammen ist es eine h?ufige Anforderung, Karussellwechseleffekte zu erzielen. In diesem Artikel wird erl?utert, wie Sie mit dem WeChat-Applet den Karussell-Umschalteffekt erzielen, und es werden konkrete Codebeispiele aufgeführt. Fügen Sie zun?chst eine Karussellkomponente zur Auslagerungsdatei des WeChat-Applets hinzu. Sie k?nnen beispielsweise den Tag <swiper> verwenden, um den Schalteffekt des Karussells zu erzielen. In dieser Komponente k?nnen Sie b übergeben
