关于微信登录授权获取unionid的方法

前言:微信登录授权是目前普遍存在于小程序的,还有一种静默授权方式是微信提供的但是不推荐使用,由于不同设备登录openid是不同的那么我们应该怎样拿到一个唯一的ID呢,下面做分享

wxml代码

<button open-type="getUserInfo" bindgetuserinfo='userInfo'>授权</button>  //这两个方法是官方提供使用的
wxjs代码
//当用户点击触发wx.getUserInfo
wx.getUserInfo({
       //成功后会返回你登录扫码的那个微信的相关信息 success(res) {
//console.log(res); var _getUserInfo = res; var _userInfo = JSON.parse(res.rawData); //_this.setData({ nickName: _userInfo.nickName, avatarUrl: _userInfo.avatarUrl });这里主要修改了显示了用户信息 /**登陆:获取openid */ wx.login({ success(res) { //console.log(res); wx.request({ url: 'http://127.0.0.1:8000/api/v1/Index/getOpenid',//这里是后台的接口地址 method: 'post',//method data: { code: res.code, //上面成功返回的值 encryptedData: _getUserInfo.encryptedData,//下面成功返回的值 iv: _getUserInfo.iv//上面成功返回的值 }, success(res) { console.log(res); } }) } }) } })
//后端php代码 获取用户登录的相关信息方法
    public function getOpenid(){
        include_once "../wx/PHP/wxBizDataCrypt.php";//通过小程序提供的==>https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html
        $data = request()->post();//获取传递的值
        $appid = "xxxx";//登录appid
        $secret = "xxxx";//secret密码
        $iv = $data['iv'];//登录成功会返回的小程序端口传递过来的
        $encryptedData = $data['encryptedData'];//同上传递过来的
        $code = $data['code'];//同上传递过来的
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code";//get调用这个小程序接口
        $data = json_decode(file_get_contents($url),true);//返回一个字符串包含了openid
        // halt($data);
        $sessionKey = $data['session_key'];//获取返回的解密方法
        $openid = $data['openid'];
        $pc = new \WXBizDataCrypt($appid, $sessionKey);
        $errCode = $pc->decryptData($encryptedData, $iv, $unionId );
        halt($uniont);//获取解密后的unionid到这里你也是拿不到的需要在小程序开发平台绑定小程序

https://open.weixin.qq.com/cgi-bin/applist?t=manage/list&page=0&num=20&openapptype=65536&token=2e42c884ed21ae7091f66ba1d0c19f488a37b971&lang=zh_CN

 

到此你大概知道了吧openid是加密后的值我们只需要解密出来就可以得到唯一的unionid值

 

posted @ 2019-01-22 17:05  江世文  阅读(7700)  评论(0编辑  收藏  举报