前端面试题值微信小程序基本问题

微信小程序基本问题

1.扫网页端码登录

  • 打开二维码,二维码中包含一个可唯一识别的字符串,成为uuid
  • 当一个可以与微信服务器交互的客户端扫描该二维码,客户端获得该二维码的uuid,并与自身的账号进行绑定
  • 浏览器端获得了客户端已经登录的账号信息,并且进行显示,等待客户端点击确认登录
  • 客户端点击确认登录,将uuid+账号信息发送到服务器,微信服务器收到之后根据uuid找到该浏览器的请求页面,并且给出token,然后登录成功。

2.canvas

保留

3.云函数

保留

4.登录

前端代码

  wx.login({
        success: res => {
          let data = {
            code:res.code,
            username:this.data.userInfo.nickName,
            state:that.data.shenfen
          };
          wx.request({
            url: 'http://www.sevenhero.cn:1234/login',
            method:'POST',
            data:JSON.stringify(data),
            success(res){
              if(res.data){
                wx.setStorage({
                  key:"openid",
                  data:res.data  //这里获取到了openid
                })
              wx.switchTab({
                url: '../sale/sale',
              })
            }
          }
          })
        }
      })

后端代码

async post (c) {
        //发起请求调用小程序服务器api

        let status = JSON.parse(c.body).state,
            username = JSON.parse(c.body).username;

        let login_url = `https://api.weixin.qq.com/sns/jscode2session`
        +   `?appid=${wxkey.appid}`
        +   `&secret=${wxkey.secret}`
        +   `&js_code=${JSON.parse(c.body).code}`
        +   `&grant_type=authorization_code`

        let r;

        await fetch(login_url)
        .then(res=>res.json())
        .then(res=>{
            r = res
        })

        //如果获取openid失败则返回500错误码
        if(r.openid === undefined){
            c.statues = 500
            return
        }

        //检测数据库中是否有此用户
        let myuser = await c.service.model.db_login.findUser(r.openid,status)

        //if this user not exists
        if(myuser == false)
        {
            console.log('没有这个用户,加入此新用户~')
            await c.service.model.db_login.addUser(r.openid,status,username);
        }

        //返回openid
        c.res.body = r.openid;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值