ThinkPHP5 公眾號獲取使用者資訊
阿新 • • 發佈:2018-11-01
<?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;//頭像地址 } }