uniapp 小程序实现微信授权登录(前端和后端)

这篇具有很好参考价值的文章主要介绍了uniapp 小程序实现微信授权登录(前端和后端)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

掘金地址:https://juejin.cn/post/7290371873547583548

1.前端:通过 uni.getUserProfile 和 uni.login 来实现

1.主要流程:先通过 uni.getUserProfile授权获取用户名称和头像等信息 在调用 uni.login 获取微信登录需要的临时code

2. 前端代码:

    async onLogin() {
      //获取用户信息 (头像和名称)
      const [, userProfile] = await uni.getUserProfile({
        desc: "获取用户信息",
        lang: "zh_CN",
      });
      if (userProfile) {
        //调用微信登录接口获取临时code 
        const [, loginInfo] = await uni.login({ provider: "weixin" });
        if (loginInfo) {
         // 登录临时code
          const { code } =  loginInfo;
          const {userInfo: { avatarUrl, nickName }} = userProfile;
          // 组装后端接口需要的数据
          const params = {code, avatarUrl, userName: nickName};
          // 调用登录接口
          const { data } = await wxLogin(params);
          uni.setStorageSync(USER_TOKEN, data.token);
          this.$store.commit("SET_USER_INFO", data);
          this.$api.msg("登陆成功");
        }
      }
    },

2.后端:需要通过调用微信提供的第三方接口来实现

1.主要流程:在前端调用接口成功的将临时code 传递给后端时 ,后端通过调用微信的第三方接口拿到 openid, session_key 这两个参数,查询数据库是否有 openid 如果有则更新 session_key ,如果没有则在数据库中新建一条用户信息的数据

2.后端代码(node.js)

/** 
   @description 微信登录
  * @param {String} code 
  * @type {POST}
  * @return 
*/
router.post('/wxLogin', async (req, res, next) => {
  try {
    const { code, avatarUrl, userName } = req.body
    let token = Token.tokenSet()
    // 当前微信开发者的appId
    const appId = 'wx66dee29d470c6095'
    const appSecret = '79ee1240fa1ee8f67066d67fa7692e21';
    // 微信登录的第三方接口
    const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`
    //调用微信登录第三方接口
    const { data: { openid, session_key } } = await axios({ url, method: 'get' })
     //更新当前用户的信息
    const updateInfo = await db.findOneAndUpdate({ openId: openid }, { $set: { sessionKey: session_key, token,avatarUrl,userName } })
    if (updateInfo) {
      const userInfo = await db.findOne({openId: openid})
      return res.jsonp({ code: 1, message: '登录成功', data: userInfo})
    } else {
      //如果当前用户没有登录则插入一条新的用户信息
      const insertInfo = { openId: openid, sessionKey: session_key, userType: 2, status: 1, token, userName,avatarUrl }
      const userInfo = await db.findOne({openId: openid})
      await db.insertMany(insertInfo)
      return res.jsonp({ code: 1, message: '登录成功', data: userInfo})
    }

  } catch {
    next({ message: '接口错误' })
  }
})

完整的代码逻辑可参考

前端:https://gitee.com/ZHANG_6666/uni-app/blob/master/pages/myCenter/myCenter.vue

后端:https://gitee.com/ZHANG_6666/express–vue3–ant-design2/blob/master/routes/users.js

uniapp 微信小程序登录,微信小程序,uni-app,微信,前端,微信登录流程,微信小程序登录文章来源地址https://www.toymoban.com/news/detail-571173.html

到了这里,关于uniapp 小程序实现微信授权登录(前端和后端)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp开发小程序,实现获取【微信授权登录】功能

    APP微信授权登录需要到微信开放平台申请,在HBuilderX配置APP SDK中微信登录的appId,另外需要跟小程序、公众号授权账号互通的话也需要在微信开放平台申请 1、在微信公众平台申请应用,获取相应的appid和appsecret 2、在HBuilderX配置APP SDK中微信登录的appId和appsecret 微信授权登录(

    2024年02月09日
    浏览(53)
  • 前端uni微信小程序和后端nodejs使用websoket

    需求 前端向后台服务器发请求获取验证码,然后端游输入验证码,向我的后端发请求获取验证信息。后台给游戏端返回信息的时候同时给微信小程序端返回验证结果。意思是不要微信小程序端主动触发,验证是否绑定的请求。 思路 后端生成验证码时存入用户的唯一Id和ip,前

    2024年02月03日
    浏览(52)
  • 小程序实现微信登录Java后端(一)--前端实现

    目录 一、概述 二、登录流程 三、前端代码 四、解读前端代码 1、登录部分 2、检查当前用户是否已登录 3、小程序启动时校验登录 五、阶段性小结 最近终于有时间去搞一下准备参加比赛的小程序,小程序一开始设计的是使用邮箱登录,老师建议直接实现微信登录,更加方便

    2024年02月07日
    浏览(43)
  • 基于uniapp+java实现微信小程序无感登录,授权手机号登录,获取昵称头像,获取定位信息

    使用uniapp开发微信小程序,避免不了微信登录。但自动微信2022年升级了api版本后,不再允许返回昵称和头像信息,所以才出现无感登录或授权手机号登录。实现方式大同小异。 java后端所需maven 前端实现代码: 由于使用uni.login并不需要用户授权,所以能做到无感登录。 后端

    2024年02月16日
    浏览(68)
  • 微信小程序的授权登录-Java 后端 (Spring boot)

    微信开发文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 一个可以测试的微信小程序 此微信小程序的APPID和APPscret(至开发者后台获取) 从时序图我们可以了解到流程大致分为两步: 小程序端获取code后传给Java后台 Java后台获取code后向微信后台接口

    2024年02月09日
    浏览(55)
  • 新!uniapp微信小程序微信授权登录

     11月后,微信小程序对于微信授权登录做了逻辑上的更改,之前的一键授权获取用户信息的功能已不再适用。已发布审核完成的小程序不受影响,但要想再发布,只能换成新的登陆逻辑了。 首先,要说明的,个人中心页面,未登陆时,应有登陆按钮,最好不要通过路由守卫

    2024年02月09日
    浏览(56)
  • uniapp微信小程序授权登录并获取手机号

    新版:前端要授权两次,一次获取用户信息授权码code,另外一次获取用户手机授权码code,全部传给后端。后端通过用户信息授权码获取openid,通过手机授权码获取手机号码。老版:前端传给后端授权码code和用户手机授权回调 里的iv和encryptedData给后端,后端通过code获取ope

    2024年02月11日
    浏览(99)
  • uniApp微信小程序唤出授权头像昵称(微信授权登录)弹窗,及服务端用户信息解密注意事项

    头像昵称弹窗弹出条件:button授权按钮 + uni.getUserProfile API请求 1.H5部分 2.JS部分 注意事项: 不能嵌入其他API内调用,一定要在调用的方法中第一层执行(优先执行 uni.getUserProfile ) 正确做法 :必须第一步用户点击按钮,第二步调取 uni.getUserProfile API(调取 uni.getUserProfile 操作

    2024年02月11日
    浏览(68)
  • uniapp+node.js+mysql前后端微信小程序授权登录

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一、前端代码? 1.微信授权登录的页面(没有样式,自己写) 2.”我的“页面 3.封装request.js的页面 4.vuex的状态管理的页面 5.添加了识别有放token的没有登录就自动跳转登录

    2024年02月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包