ThinkPHP5 公众号获取用户信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MIYIshi/article/details/83549194
<?php
namespace app\wechatuserinfo\controller;
use think\Controller;
use think\Db;
use think\Cookie;

//公众号appID
define("APPID", "APPID");
//公众号appsecret
define('SECRET', "SECRET");
//跳转回调页面用于接收code
define('REDIRECT_URL',"REDIRECT_URL/*回调页面*/");

/**
 * Class Wechatuserinfo
 * @package app\wechatuserinfo\controller
 *
 * 当前控制器的主要目的是获取微信用户信息
 *
 */
class Wechatuserinfo extends Controller
{
    public function index()
    {
        echo "获取用户信息。。。。";
    }

    /**
     * 打开微信登录授权页面
     */
    public function getUser()
    {
        $appid=APPID;
        $secret=SECRET;
        $redirect_uri = REDIRECT_URL;
        //发送获取code连接
        $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
        //发送GET请求
        header("Location: ".$url);
        exit();//必要
    }

    /**
     * 获取用户基本信息
     */
    public function oauth2()
    {
        $APPID=APPID;
        $APPSECRET=SECRET;
        $redirect_uri = REDIRECT_URL;
        //获取code
        $code="";
        //使用code换取access_token
        $AccessToken="";
        if (isset($_GET['code']))
        {
            $code = $_GET['code'];
            $GetAPPSECRET = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$APPID.'&secret='.$APPSECRET.'&code='.$code.'&grant_type=authorization_code';
            //使用code换取access_token
            $AccessToken = file_get_contents('https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$APPID.'&secret='.$APPSECRET.'&code='.$code.'&grant_type=authorization_code');
            //解析code换取的JSON数据
            $objJson = json_decode($AccessToken);
            $RT = $objJson->refresh_token;
            //刷新access_token
            $ShuaXinAT = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$APPID.'&grant_type=refresh_token&refresh_token='.$RT;
            $RFAccessToken = file_get_contents($ShuaXinAT);
            //解析刷新access_token的JSON数据
            $rft = json_decode($RFAccessToken);
            $access_token = $rft->access_token;
            $openid = $rft->openid;
            //使用access_token获取用户信息
            $GetUserInfo = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN"';
            $UserInfo = file_get_contents($GetUserInfo);
            //dump($UserInfo);
            //记录用户信息
            $this->recordUserInfo($UserInfo);
        }else{
            echo "没有取到Code";
        }
    }

    /**
     * 检测用户是否存在
     * 如果存在就按逻辑跳转
     * 否则先保存用户信息 再逻辑跳转
     */
    public function recordUserInfo($UserInfo)
    {
        //解析用户信息
        $UserJson = json_decode($UserInfo);
        $openid = $UserJson->openid;//用户唯一标识
        $nickname = $UserJson->nickname;//昵称
        $sex = $UserJson->sex;//性别 1=男
        $language = $UserJson->language;//语言
        $city = $UserJson->city;//城市
        $province = $UserJson->province;//省份
        $country = $UserJson->country;//国籍
        $headimgurl = $UserJson->headimgurl;//头像地址
    }
}

猜你喜欢

转载自blog.csdn.net/MIYIshi/article/details/83549194