微信小程序登录逻辑

  1. 用户打开小程序后,点击登录按钮。
  2. 小程序调用微信提供的 wx.login() API 获取用户的临时登录凭证(code)。
  3. 小程序将获取到的 code 发送给开发者服务器。
  4. 开发者服务器使用 code 向微信服务器发送请求,获取用户的唯一标识 OpenID 和会话密钥 session_key。
  5. 开发者服务器使用 OpenID 和 session_key 生成自己的会话密钥,用于验证用户身份和加密数据。
  6. 开发者服务器将生成的会话密钥返回给小程序。
  7. 小程序将会话密钥存储在本地,以便后续请求可以携带该密钥进行验证。
  8. 用户授权后,小程序调用微信提供的 wx.getUserInfo() API 获取用户信息。
  9. 小程序将获取到的用户信息和会话密钥发送给开发者服务器。
  10. 开发者服务器使用会话密钥解密和验证用户信息,并保存用户信息到数据库中。
  11. 登录成功后,小程序跳转到首页或其他需要登录才能访问的页面。
  12. 需要注意的是,在步骤 4 中,开发者服务器需要向微信服务器发送一个 HTTPS 请求,因此需要有相应的 SSL 证书。另外,在步骤 8 中,如果用户没有授权,则无法获取用户信息。因此,开发者需要根据实际情况进行相应的处理,例如提示用户授权或提供其他方式进行登录。

----以下是uni的登录的代码逻辑  微信原生的话 具体可以去小程序官网查看

function wxlogin(msg) {
    let that = this;
    uni.showLoading({
        title: '登录中'
    });
    uni.login({
        desc: 'weixin',
        success: loginRes => {
            wx.getUserInfo({
                success: function(res) {
                    uni.request({
                        url: myApi.loginUrl,
                        data: {
                            code: loginRes.code, 
                            rawData: res.rawData,
                            signature: res.signature,
                            userInfo: msg
                        },
                        method: 'GET',
                        success(res) {
                            console.log('登陆成功')
                            console.log(res)
                            let userInfo = res.data.data //登陆返回的所有数据
                            uni.setStorageSync('userInfo', userInfo) //保存全部数据
                            uni.setStorageSync('dadaes', userInfo) //保存全部数据
                            uni.setStorageSync('token', userInfo
                                .token) //保存code'

                            var pages = getCurrentPages(); //获取所有页面的数组对象
                            var currPage = pages[pages.length - 1]; //当前页面
                            uni.reLaunch({
                                url: currPage.$page.fullPath
                            })
                        },
                        fail() {
                            that.$refs.uNotify.show({
                                message: '授权失败,请联系管理员',
                                type: 'error'
                            });
                        }
                    });
                }
            })
        }
    });
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值