微信小程序如何实现登录功能-创新互联

这篇文章将为大家详细讲解有关微信小程序如何实现登录功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

成都创新互联公司网站建设公司提供网站设计和自适应建站服务。团队由有经验的网页设计师、程序员和市场专家组成,能够提供从H5页面制作,网站制作,广告投放,模板建站到小程序制作等全方位服务。 以客户为中心,致力于为客户提供创新、高效的解决方案,帮助您打造成功的企业网站。

注册/登录

小程序端" style="margin: 0.8em 0px; padding: 0px; box-sizing: border-box; font-weight: 100; line-height: 1.3em; font-size: 2.13em;">小程序端:

通过上面wx.login和wx.getUserInfo两个api拿到相应的信息,并通过上方接口传给自己的服务器.

需要传输的信息有7个参数:

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 加密算法的初始向量

服务端处理逻辑

相关的信息传输给服务器后,服务器

1.先根据js_code去微信服务器拿到session_key
2.(此步可省略)使用 sha1( rawData + sessionkey )拿到字符串,判断与signature值是否相同,如果相同则用户信息无误,可进行下一步.如果不同,则说明用户信息被篡改或过期.
3.然后根据解密算法自行解密(输入参数为appId,sessionKey,encryptedData,iv,返回一个jsonObj),拿到openId和unionId等信息,执行服务器端的注册/登录操作.
4.注册/登录操作逻辑完成后,将我们服务器的sessionId(或其他token),以及用户信息返回给客户端.

其中,服务器去获取session_key的请求为:

(小写为固定写好的,大写为待替换的)
/tupian/20230522/jscode2session>  //正常返回的JSON数据包     {           "openid": "OPENID",           "session_key": "SESSIONKEY"           "expires_in": 2592000     }     //错误时返回JSON数据包(示例为Code无效)     {         "errcode": 40029,         "errmsg": "invalid code"     }

相关解密算法:

https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html

注意:示例代码中有node,c++,php,python的,没有java的.

需要服务器返回的信息:

sessionId/token 登录状态标识
userInfo: jsonObject,用户在我们平台上的信息,其内容与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();
}

关于“微信小程序如何实现登录功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

名称栏目:微信小程序如何实现登录功能-创新互联
转载来于:https://www.cdcxhl.com/article30/epgpo.html

成都网站建设公司_创新互联,为您提供软件开发网站设计公司自适应网站品牌网站建设响应式网站品牌网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设