小程序获取手机号

小程序获取手机号

前言

  1. 小程序通过 wx.login 获取 code(用户登录凭证,有效期五分钟,使用一次后实效)
  2. 服务端拿到 code,调用auth.code2Session,获取用户的 openid (用户在当前应用的唯一标识)、session_key (会话秘钥是对用户数据进行 加密签名 的秘钥,在获取用户信息时会用到) 等信息。为了安全,服务器不应该把会话秘钥下发到小程序,也不应该对外提供这个秘钥
  3. 通过获取到的 openid,session_key 以及用户的其他加密信息通过 服务端获取开放数据(下面有下载地址) 完成获取手机号

获取用户信息

1.用户授权后,小程序通过 wx.getUserInfo(依据官方提示) 获取用户信息,敏感信息被加密

					wx.login({
				           success(res) {
				             //获取code
				             if (res.code) {
				               wx.request({
				                 url: 服务器端获取openid的地址,
				                 header: {
				                   'content-type': 'application/x-www-form-urlencoded',
				                 },
				                 method: 'POST',
				                 data: {
				                   code: res.code,
				                 },
				                 //获取openid
				                 success(res) {
				                   app.globalData.openid = res.data.data.openid;
				                   if(res.data.code==1){
				                     wx.getUserInfo({
				                       success: function (res) {
				                         wx.request({
				                           url: '服务器端获取session_key的地址',
				                           header: {
				                             'content-type': 'application/x-www-form-urlencoded',
				                           },
				                           method: 'POST',
				                           data: {
				                             nickName: res.userInfo.nickName,
				                             pic: res.userInfo.avatarUrl,
				                             openid: app.globalData.openid,
				                           },
				                           success(e) {
				                             app.globalData.openid = e.data.data.openid;
				                             app.globalData.token = e.data.data.token;
				                             app.globalData.uid = e.data.data.user_id;
				                             wx.setStorage({
				                               key: 'uid',
				                               data: e.data.data.user_id
				                             }),
				                               wx.setStorage({
				                                 key: 'openid',
				                                 data: e.data.data.openid
				                               })
				                             wx.navigateTo({
				                                       url: '执行之后跳转的地址',
				                                       })
				                           }
				                         })
				                       }
				                     }) 
				                   }else{
				                     console.log("登录失败")
				                   }
				                 }
				               })
				             }
				           },
				         })

2.把加密信息窜给服务端,,使用在登录时获取的 session_key 解密数据,可依据官方:服务端获取开放数据
3.下载好之后通过调用 decryptData 方法以及用户信息就可以获取到时候手机号了,这里需要你的appid

			public function getUserMobile($appid){
			        $post = Request::post();
			        //获取手机凭证
			        $data['openid'] = $post['openid'];
			        $data['session_key'] = $post['session_key'];
			        $result = $this->decryptData($post['encryptedData'],$post['iv'],$data,$appid,$data['session_key']);
			        if ($result == 0) {
			            return [code=>0,mag=>'成功',data=>$result]
			        }
			        return [code=>-1,mag=>'失败']
			    }

到这里就可以完成了,之后你就可以加入自己的需求,觉得还行的下方扣个1 谢谢 .欢迎关注

本人也是菜鸟,希望也可帮到小伙伴们,有任何问题或者不再清楚的 欢迎留言!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值