在uniapp和微信公众号中使用微信授权登录-vue3-vuecli-ts

1.前言

        因为需要做多端应用,所以选择使用uniapp来同时开发h5、微信小程序。

        这里只写有关微信网页的登录授权,非微信网页的后续会写对应的文章。

        技术栈:uniapp、vue3、vite

        编辑器:vscode

2.了解微信授权

        在使用微信授权之前,我们需要了解微信授权的机制。

        Q:我们为什么要微信授权?

        A:因为使用微信授权登录是常规登录的一种方式,并且可以联动多端应用的用户数据,使用户数据唯一(俗话讲就是没有安卓区和苹果区,只用一个大区)。如果我们需要微信小程序的用户在h5网页或者app中也是数据互通,那么就需要使用unionId区分。微信自己用户一套区分用户的规则,openid和unionid,下面贴上官方文档。

        微信网页开发-网页授权

3.如何实现

        1.微信开放平台

                在使用微信授权之前我们需要再微信开放平台上创建应用(关联应用)。

                

                如果你的应用包括微信公众号平台,则需要绑定微信公众号;其他同理。

                创建应用在这里就不多赘述。

        2.uniapp中添加代码

                在uniapp中,在app.vue中添加代码。

                

onLoad(()=>{
    //判断链接查询串使用有code,和本地缓存是否有token
     if (options.query?.code || uni.getStorageSync("token")) {
      //TODO
        this.wxgzhLogin(options.query.code)
     } else {
      let url = encodeURI("https://www.example.com/login");//这里填写你跳转的链接
      window.location.href =
        "https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的APPID&redirect_uri="     +url +"&response_type=code&scope=snsapi_userinfo&connect_redirect=1#wechat_redirect";
      return;
    }
})

        这里code是通过跳转链接带上的,跳转链接可以是一个请求,并且重定向到你的首页附带code。

可以通过code去调用接口获得你当前用户的信息。

wxgzhLogin(code) {
      let that = this;
      return new Promise((resolve, reject) => {
        uni.request({
          url: "你的接口",
          data: {
            code: code,
          },
          method: "POST",
          success(res) {
            if (res.data.code == 200) {
             //TODO
            } else if (res.code == 500) {
                //TODO
            } else {
                //TODO
            }
            resolve(res);
          },
          fail(err) {
           //TODO
          },
        });
      });
    },

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值