uniapp小程序授权登录

基本和微信小程序操作类似,先让小程序授权,授权成功获取code,然后通过code调用后台接口,去获取用户信息,即可得到openID。
首先调用小程序授权:login方法,拿到code,不同小程序的授权方式不同,可以用uniapp判断语法做相应操作

// #ifdef MP-WEIXIN
uni.login({
  provider: 'weixin',
  success: (loginRes)=>{
    if (loginRes.code) {
      this._getWxOpenId(loginRes.code, callback);
    }
  }
});
// #endif
// #ifdef MP-ALIPAY
// 系统建议使用支付宝原生写法
my.getAuthCode({
  scopes: 'auth_base',
  success: (authData) => {
    let code=authData.authCode;
    this._getAliOpenId(code, callback);
    }
 });
// #endif

然后调用后台接口,传入code和需要的值,去获取用户信息,这里微信和支付宝写了两个方法,主要是参数的接口地址不同,就分开处理了。

// 微信授权获取openId
_getWxOpenId(code, callback) {
  let url = `后台接口地址`;
  this.$request({
    url: url,
    data: {
      code: code,
      userType: getApp().globalData.appType,
      appId: getApp().globalData.wxMyAppId
    },
    success: (data) => {
      console.log('通过code授权', data)
      if (data && data.obj) {
        let userInfo = data.obj;
          getApp().globalData.userInfo = userInfo;
          this._saveCache(userInfo);
        } else {
          uni.showToast({
            title: data.message || '获取openId失败',
            icon: 'none'
          })
        }
        callback && callback();
      },
      fail: (err) => {
        callback && callback();
        uni.showToast({
          title: '网络开小差了,获取openId失败',
          icon: 'none'
        })
      }
    })
}

你可能感兴趣的:(uniapp小程序授权登录)