Maison > Article > Applet WeChat > L'applet WeChat réalise la disposition logique de la fonction de connexion
Afin de permettre à chacun de mieux développer l'applet WeChat, cet article partage principalement avec vous la disposition logique de la connexion à l'applet WeChat, dans l'espoir d'aider tout le monde.
S'inscrire/Connexion
Mini Terminal" style="margin : 0,8em 0px ; ; line-height : 1.3em; font-size : 2.13em;"> Mini programme :
Obtenez les informations correspondantes via les deux API ci-dessus wx.login et wx.getUserInfo, et transmettez l'interface ci-dessus. est transmise à son propre serveur
Les informations qui doivent être transmises ont 7 paramètres :
appid 小程序唯一标识 secret 小程序的 app secret js_code //wx.login登录时获取的 code,用于后续获取session_key //下面两个参数用户服务器端签名校验用户信息的 signature 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息。 rawData 不包括敏感信息的原始数据字符串,用于计算签名。 //下面两个参数是用于解密获取openId和UnionId的 encryptedData 包括敏感数据在内的完整用户信息的加密数据 iv 加密算法的初始向量 当然,可以精简为以下三个参数. 其余的签名校验的参数可省略,而appid和secret可以直接写在服务器. js_code // wx.login登录时获取的 code,用于后续获取session_key encryptedData 包括敏感数据在内的完整用户信息的加密数据 iv 加密算法的初始向量
Logique de traitement côté serveur
Informations associées Après la transmission au serveur, le serveur
1. Accédez d'abord au serveur WeChat pour obtenir la clé de session selon le code_js
2 (cette étape peut être omise) utilisez sha1 (rawData + sessionkey. ) pour obtenir la chaîne et juger de la valeur de la signature. Sont-elles identiques ? Si elles sont identiques, les informations utilisateur sont correctes et vous pouvez passer à l'étape suivante. Si elles sont différentes, les informations utilisateur ont été falsifiées ou expirées. .
3. Décryptez-le ensuite vous-même selon l'algorithme de décryptage (les paramètres d'entrée sont appId, sessionKey, selectedData, iv, Return a jsonObj), obtenez des informations telles que openId et unionId et effectuez des opérations d'enregistrement/connexion côté serveur. .
4. Une fois la logique de l'opération d'enregistrement/connexion terminée, renvoyez l'ID de session (ou un autre jeton) de notre serveur et les informations utilisateur au client.
Parmi eux, la demande du serveur pour obtenir session_key est :
(minuscule signifie fixe, majuscule signifie à remplacer)
https://api.weixin/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
//正常返回的JSON数据包 { "openid": "OPENID", "session_key": "SESSIONKEY" "expires_in": 2592000 } //错误时返回JSON数据包(示例为Code无效) { "errcode": 40029, "errmsg": "invalid code" }Algorithme de décryptage associé :https://mp weixin.qq.com/debug/wxadoc/dev/api/signature.htmlRemarque : l'exemple de code inclut node, c++, php, python, mais pas java.Nécessite un serveur Informations renvoyées : sessionId/token identifiant d'état de connexion
userInfo : jsonObject , les informations de l'utilisateur sur notre plateforme, son contenu est le même que celui renvoyé par l'interface getPersonalInfo.
//最终供外面调用的方法 function login(){ console.log('logining..........'); //调用登录接口 wx.login({ success: function (e) { console.log('wxlogin successd........'); var code = e.code; wx.getUserInfo({ success: function (res) { console.log('wxgetUserInfo successd........'); var encryptedData = encodeURIComponent(res.encryptedData); thirdLogin(code,encryptedData,res.iv);//调用服务器api } }) } }); } function thirdLogin(code,encryptedData,iv){ var url = "eeee/xxx/login/ttttt"; var params = new Object(); params.code = code; params.encryptedData = encryptedData; params.iv =iv; buildRequest(new Object(),url,params,{ onPre: function(page){}, onSuccess:function (data){ console.log('my login successd........'); console.log(data); getApp().globalData.session_id = data.session_id; getApp().globalData.uid = data.uid; getApp().globalData.isLogin = true; }, onError : function(msgCanShow,code,hiddenMsg){ } }).send(); }Recommandations associées :
Comment obtenir des informations sur les utilisateurs via l'applet WeChat
Un résumé des problèmes rencontrés dans le développement des mini-programmes WeChat
Une version mini-programme WeChat du partage d'exemples de Zhihu
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!