zoukankan      html  css  js  c++  java
  • 关于微信登录授权获取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值

    IT这条路,当你懂得越多的时候,那么你不懂的也就会越多了.
  • 相关阅读:
    ubuntu开机启动
    我的linux之路
    继承
    oracle 10g win7 win8 下的安装
    Java 安全检测
    BigDecimal 四舍五入
    Java Map 便利
    java split . |
    java 爬虫 Jsoup
    获取当前路径
  • 原文地址:https://www.cnblogs.com/learningPHP-students2018/p/10304812.html
Copyright © 2011-2022 走看看