Thinkphp5下微信公众号获取用户信息

前言

  • 一直在用整理下tp5 开发微信公众号获取用户信息的简单笔记 废话不多说 直接贴代码如下:

正文

准备工作

  • 在微信公众平台的开发者工具中申请公众平台测试账号如下图
    -
  • 在网页账号中 修改网页授权获取基本信息
    -
    在这里插入图片描述

代码

  • 楼主是在tp5.1中开发 先写好路由
 //简单授权
    Route::any("getWxBase",'home/Index/getWxForBase');
    Route::any("getWxInfo",'home/Index/getWxBaseInfo');
    //复杂授权
    Route::any("getWxForDetail",'home/Index/getWxForDetail');
    Route::any("getWxDetail",'home/Index/getWxDetail');
  • 在控制器Index.php中写逻辑代码如下
    /**
     * 用于请求微信接口获取数据
     * @param $url
     * @return bool|string
     */
    public function get_by_curl($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        return json_decode($output, true);
    }
    /**
     * snsapi_base授权获取用户信息 入口
     */
    public function getWxForBase()
    {
        $appid = "wx****************2";//自己的微信公众号 appid
        $redirect_uri = urlencode("http://XXXXXXXXX.cn/Index/getWxInfo");//此处填写自己项目中的地址能访问到下面getWxBaseInfo方法 (本方法加了路由处理)
        //获取到code
        $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
        $this->redirect($url, 302);//携带微信验证的code跳转到snsapi_base授权获取用户基本信息 即下面的方法getWxBaseInfo

    }
    /**
     * snsapi_base授权获取用户基本信息
     * @return bool|string
     */
    public function getWxBaseInfo()
    {
        $appID = "wx***********2";//自己微信公众号中的appid
        $appSecret = "5b9************35";//自己微信公众号中的appSecret
        $Code = $_GET['code'];
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appID."&secret=".$appSecret."&code=".$Code."&grant_type=authorization_code";
        $res = $this->get_by_curl($url);
        var_dump($res);
        die;
        return $res;
    }

 /**
     * snsapi_userinfo授权获取详细用户信息 入口
     */
    public function getWxForDetail()
    {
        //获取用户Code
        $appid = "wx***********22";//自己微信公众号中的appid
        $redirect_uri = urlencode("http://XXXXXXXXXXXXX.cn/Index/getWxDetail");//此处填写自己项目中的地址能访问到下面getWxDetail方法 (本方法加了路由处理)
        $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=1234#wechat_redirect";//state参数可随意填写
        $this->redirect($url, 302);;//携带微信验证的code跳转到snsapi_userinfo授权获取用户基本信息 即下面的方法getWxDetail
    }
    /**
     * snsapi_userinfo授权获取详细用户信息
     * @return bool|string
     */
    public function getWxDetail()
    {
        $appID = "wx**********2";//自己公众号中的appid
        $appSecret = "5b9**************1c35";//自己公众号中的appsecret
        $Code = $_GET['code'];
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appID."&secret=".$appSecret."&code=".$Code."&grant_type=authorization_code";
        $res = $this->get_by_curl($url);
        $access_token = $res['access_token'];
        $openId = $res['openid'];
        $url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openId."&lang=zh_CN";
        $info = $this->get_by_curl($url1);
        var_dump($info);die;
        return $info;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值