龙空技术网

微信小程序授权获取手机号,跟着我来学习下是如何实现的吧

小程序软件开发 443

前言:

今天朋友们对“php微信小程序授权登录失败”可能比较讲究,咱们都想要剖析一些“php微信小程序授权登录失败”的相关资讯。那么小编同时在网络上网罗了一些有关“php微信小程序授权登录失败””的相关内容,希望看官们能喜欢,各位老铁们快快来了解一下吧!

序言:目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。

文档地址:

需求:授权手机号

实现方法:

wxml

<button class="name line1 my_money phone11" open-type='getPhoneNumber' bindgetphonenumber='getPhoneNumber' >授权手机号</button>

因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。

js

/**   * 手机号授权   */  getPhoneNumber:function(e){    console.log(e);    if(e.detail.errMsg != 'getPhoneNumber:ok'){      if(e.detail.errMsg == 'getPhoneNumber:fail user deny' || e.detail.errMsg == 'getPhoneNumber:fail:user deny'){        wx.showToast({          title: '用户取消',          icon: 'none'        })      }else{        wx.showToast({          title: e.detail.errMsg,          icon: 'none'        })      }      return false;    }    var encryptedData = e.detail.encryptedData;    var iv = e.detail.iv;    this.phone_session(encryptedData,iv);  },  //获取手机号session  phone_session:function(encryptedData,iv){    wx.showLoading({ title: '加载中' ,'mask' : false });    var that = this;    var token = wx.getStorageSync('TOKEN');    var host = HTTP_REQUEST_URL;    wx.login({      success: function (r) {        var params2 = {};        params2.code =  r.code;        wx.request({          url: host+'/api/common/get_session_key',          data:params2,          method:'post',          success: function (rr) {            if(rr['data']['status'] == 200) {              var session_key = rr['data']['data']['session_key'];              wx.request({                url: host+'/api/user/phone',                method: 'POST',                data: {                  session_key: session_key,                  encryptedData: encryptedData,                  iv: iv,                },                header: {                  'Accept': 'application/json',                  'Authori-zation' : 'Bearer ' + token,                },                success(res3) {                  // 绑定成功                  wx.hideLoading();                  if(res3.data.status == 200) {                    that.setData({                      userInfo: res3.data.data.user_info                    })                  } else {                    wx.showToast({                      title: res3.data.msg,                      icon: 'none'                    })                  }                },                fail(res3) {                  // 绑定失败                  wx.showToast({                    title: res3.data.msg,                    icon: 'none'                  })                }              })            } else {              wx.showToast({                title: rr['data']['msg'],                icon: 'none'              })            }          },        })      }    })  },    

php

/**     * 授权手机号     */    public function phone(Request $request){                //开发者如需要获取敏感数据,需要对接口返回的加密数据( encryptedData )进行对称解密        $encryptedData = input('param.encryptedData');        $iv = input('param.iv');        $session_key = input('param.session_key');        require_once $root_path.'/extend/wxbizdatacrypt/wxBizDataCrypt.php';        $pc = new \WXBizDataCrypt($wechat["routine_appId"], $session_key);                        $errCode = $pc->decryptData($encryptedData, $iv, $result);  //其中$data包含用户的所有数据        if ($errCode != 0) {            return_json("网络错误,请重试",100);        }else{            $result = json_decode($result,true);            Db::name("user")->where(["uid"=>$user_info["uid"]])->update(["phone"=>$result["phoneNumber"],"zt_phone"=>$result["phoneNumber"]]);        }            }

获取微信用户绑定的手机号,需先调用wx.login接口。

实现功能后如下

我是小程序软件开发,每天分享开发过程中遇到的知识点,如果对你有帮助的话,帮忙点个赞再走呗,非常感谢。

往期文章分享:

微信小程序授权登录适配wx.getUserProfile最新代码

小程序wx.chooseImage上传图片,支持相册选择图片或使用相机拍照

标签: #php微信小程序授权登录失败