thinkphp在企业微信里面获取用户ID和用户信息
今天帮朋友弄企业微信插件功能,但是有个问题就是,需要获取用户信息,看了一会资料,代码如下:
<?php
namespace addons\loginbg1\controller;
use think\addons\Controller;
use addons\thirdwork\library\Application;
class Index extends Controller {
protected $app = null;
private $appId = "wwfc7201d6c5*****";
public function _initialize() {
parent::_initialize();
$config = get_addon_config('thirdwork');
$this->app = new Application($config);
}
public function getAccessToken() {
$data1 = json_decode(session('AccessToken'));
if ($data1) {
if ($data1->expire_time < time()) {
$url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wwfc7201d6c583****&corpsecret=yTaX2mF2i3sKpi90P5NJ7QW6P9-*****";
$res = $this->https_request($url);
$res = json_decode($res);
$access_token = $res->access_token;
if ($access_token) {
$data['expire_time'] = time() + 7000;
$data['access_token'] = $access_token;
session('AccessToken', json_encode($data));
}
} else {
$access_token = $data1->access_token;
}
} else {
$url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wwfc7201d6c5834671&corpsecret=yTaX2mF2i3sKpi90P5NJ7QW6P9-W0giskUW_KEaS7N8";
$res = $this->https_request($url);
$res = json_decode($res);
$access_token = $res->access_token;
if ($access_token) {
$data['expire_time'] = time() + 7000;
$data['access_token'] = $access_token;
session('AccessToken', json_encode($data));
}
}
return $access_token;
}
public function authUser() {
if (session('UserId')) {
return session('UserId'); //判断缓存里是否有UserId,如果有直接返回,没有则获取
} else {
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$redirecturl = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; //回调地址
$redirecturl = urlencode($redirecturl);
if (input('code', '')) { //判断code是否获取到,如果以获取则获取userid,否则获取code。
$accesstoken = $this->getAccessToken(); //调用上面获取access-token的方法
$code = $_GET['code'];
$getuser = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=" . $accesstoken . "&code=" . $code; //获取userid的url。
$data = $this->https_request($getuser);
$data = json_decode($data, true); //将获取到的json格式的数据进行转化。(json_decode()方法不写后面参数true得到的是对象,写了参数true值得到的是数组)
if ($data['UserId']) {
session('UserId', $data['UserId']);
return $data['UserId'];
} else {
trigger_error("网页授权失败");
}
} else { //获取code值
$appid = $this->appId;
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $appid . "&redirect_uri=" . $redirecturl . "&response_type=code&scope=snsapi_base&state=12#wechat_redirect";
header('Location:' . $url);
}
}
}
public function https_request($url, $data = null) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
public function index() {
$userid = $this->authUser();
$access_token = $this->getAccessToken();
$url = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=$access_token&userid=$userid";
$info = $this->https_request($url);
var_dump($info);
exit;
$userinfo = $this->app->wechatwork->getUserInfo();
var_dump($userinfo);
exit;
// exit;
return $this->view->fetch();
}
}