版权声明:本文为博主原创文章,未经博主允许不得转载。 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;//头像地址 } }