微信小程序登录获取用户ID(openid和unionid)

微信小程序登录获取用户ID(openid和unionid)

一、前端开发操作:

1、配置电脑的hosts 文件

具体操作流程地址:https://jingyan.baidu.com/article/425e69e6e479a2be15fc16e1.html

2、配置如下:

添加内容:
127.0.0.1 www.yanxiaoxiao.com
192.168.3.12 www.zhangtingjie.com

3、在项目的文件app.js文件添加如下:

globalData: {
	// domain: 'http://lx.kangdaedu.com/promote',//线上地址
	domain: 'http://www.yanxiaoxiao.com:8090/promote',//host文件指定的本机地址   项目请求api接口
	// domain: 'http://www.zhangtingjie.com',//host文件指定的本机地址
  },

3、调用微信小程序的登录api接口

  wx.login({
    success: function(r) {
      var code = r.code; //用户登录凭证
      if (code) {
        wx.request({
          url: getApp().globalData.domain + '/main/biUser/decodeUserInfo',
          method: 'post',
          header: {
            'content-type': 'application/x-www-form-urlencoded'
          },
          data: {
            code: code
          },
          success: function(res) {
            console.log(res)
            //4.解密成功后 获取自己服务器返回的结果
            if (res.data.code == 200) {
            //获取到用户解密之后的信息
              var userInfo = res.data.data.userInfo;
              console.log(userInfo)
              getApp().globalData.enStudentId = userInfo.enStudentId;
              getApp().globalData.name = userInfo.name;
              if (userInfo.name == undefined || userInfo.name == '' || userInfo.name == '未注册来宾') {
                wx.redirectTo({ //跳转到注册界面
                  url: '/pages/util/register/register'
                })
              } else {
                that.initData();
              }
            } else {
              showMsg('登录失败(解码错误)')
            }
          },
          fail: function() {
            showMsg('登录失败(网络异常)')
          }
        })

      } else {
        showMsg('登录凭证错误!')
      }
    },
    fail: function() {
      showMsg('获取登录凭证失败')
    }
  })
}

二、后端开发操作:

1、微信相关配置:
(小程序ID)appid :wxedbca3eeed109f35
(小程序密钥)appSecret:ff0972cfb01aa2b3cd430433cd0cce01
2、进行解密方法:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序获取用户手机号需要前端进行授权,后端需要进行解密。以下是完整代码: 前端代码: ``` wx.login({ success: function (res) { if (res.code) { wx.request({ url: 'https://yourdomain.com/onLogin', data: { code: res.code }, success: function (res) { if (res.data.code === 0) { wx.setStorageSync('token', res.data.data.token); wx.getUserInfo({ success: function (res) { wx.request({ url: 'https://yourdomain.com/onGetUserInfo', data: { encryptedData: res.encryptedData, iv: res.iv }, header: { 'Authorization': 'Bearer ' + res.data.data.token }, success: function (res) { console.log(res.data); } }) } }) } else { console.log('登录失败!' + res.errMsg) } } }) } else { console.log('获取用户登录态失败!' + res.errMsg) } } }) ``` 后端代码: ``` <?php namespace app\api\controller; use think\Controller; use think\Request; use app\api\model\User as UserModel; use app\api\service\Token as TokenService; use app\api\service\WxUser as WxUserService; class User extends Controller { public function login() { $code = input('post.code'); $wxUser = new WxUserService($code); $openid = $wxUser->getOpenId(); $user = UserModel::getByOpenId($openid); if (!user) { $user = UserModel::create([ 'openid' => $openid ]); } $token = TokenService::generateToken(); TokenService::saveToCache($token, $user->id); return [ 'code' => 0, 'data' => [ 'token' => $token ] ]; } public function getUserInfo() { $encryptedData = input('post.encryptedData'); $iv = input('post.iv'); $token = TokenService::getCurrentToken(); $uid = TokenService::getUidByToken($token); $user = UserModel::get($uid); $wxUser = new WxUserService(); $wxUser->setSessionKey($user->session_key); $wxUserInfo = $wxUser->getUserInfo($encryptedData, $iv); $user->saveUserInfo($wxUserInfo); return [ 'code' => 0, 'data' => $wxUserInfo ]; } public function getPhoneNumber() { $encryptedData = input('post.encryptedData'); $iv = input('post.iv'); $token = TokenService::getCurrentToken(); $uid = TokenService::getUidByToken($token); $user = UserModel::get($uid); $wxUser = new WxUserService(); $wxUser->setSessionKey($user->session_key); $phoneNumber = $wxUser->getPhoneNumber($encryptedData, $iv); $user->savePhoneNumber($phoneNumber); return [ 'code' => 0, 'data' => $phoneNumber ]; } } ``` 其中,WxUserService是一个封装了微信小程序登录和解密的服务类,UserModel是一个用户模型类,TokenService是一个封装了Token生成和验证的服务类。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值