thinkphp开发根据企业号开发者文档获取企业微信用户信息
2017-06-14 00:00
936 查看
###我们要获取企业微信里用户信息,首先我们来看开发者文档。
###正如我们所看到的,我们需要access_token和userid两个参数,接下来我们就要找到如何去获取这两个参数。
###下面我们可以根据微信企业号已知的两个参数corpid(一个企业微信号只有一个,不可变)和corpsecret(每个应用有一个自己的,可变)获取到access_token。
#获取AccessToken
###access_token的有效时间是7200s,这里我们做一个存储,避免每次使用都去获取。
###我们已经得到了access_token,现在就要得到userid。
###在获取userid之前我们还要获取到code,才能把得到userid。在获取code时候我们要注意的两个参数就是CORPID(这个是我们在上面提到的一个微信号只有唯一的一个标识)和REDIRECT_URI(回调地址,就是当我们获取到code时所跳转的地址)。
#获取userid
###上面getAccessToken()和 authUser()方法都调用了一个方法那就是https_request();
###现在我已经得到access_token和userid,这时我们就可以根据第一个图中的url获取用户信息啦。
###正如我们所看到的,我们需要access_token和userid两个参数,接下来我们就要找到如何去获取这两个参数。
###下面我们可以根据微信企业号已知的两个参数corpid(一个企业微信号只有一个,不可变)和corpsecret(每个应用有一个自己的,可变)获取到access_token。
#获取AccessToken
private $appId="wxcf....."; //微信企业号的appid public function getAccessToken() { //获取AccessToken的方法 $data = json_decode(file_get_contents("AccessToken.json"));//获取存在AccessToken.json //$access_token=$data->access_token; if ($data->expire_time < time()) { //如果AccessToken过期则重新获取AccessToken // $config = C('WX_CONFIG'); $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wxcf.....&corpsecret=2ASy1p9hBT_AGhaSeJEHMbXiXY........";//获取AccessToken的url及参数。 $res =$this->https_request($url);//调用https请求方法 $res = json_decode($res); //把$res设置为对象 $access_token = $res->access_token; //获取结果集中的access_token if ($access_token) { $data->expire_time = time() + 7000; //上一次获取access_token的时间加上两小时,access_token的有效时间为两小时,超过两小时则重新获取。也可以每次使用时都重新获取,但是有获取次数限制。 $data->access_token = $access_token; $fp = fopen("AccessToken.json", "w"); //打开AccessToken.json文件,“W”表示写入(Write) fwrite($fp, json_encode($data));//获取到的结果写入 fclose($fp);//关闭文件 } } else { $access_token = $data->access_token; //未过期情况下直接读取文件里的access_token } return $access_token; }
###access_token的有效时间是7200s,这里我们做一个存储,避免每次使用都去获取。
###我们已经得到了access_token,现在就要得到userid。
###在获取userid之前我们还要获取到code,才能把得到userid。在获取code时候我们要注意的两个参数就是CORPID(这个是我们在上面提到的一个微信号只有唯一的一个标识)和REDIRECT_URI(回调地址,就是当我们获取到code时所跳转的地址)。
#获取userid
//网页授权获取用户userid 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($_GET['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); 调用https_request方法请求得到userid。 $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); } } }
###上面getAccessToken()和 authUser()方法都调用了一个方法那就是https_request();
/https请求(支持GET和POST) 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; }
###现在我已经得到access_token和userid,这时我们就可以根据第一个图中的url获取用户信息啦。
public function getinfo(){ //获取用户信息 $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);
相关文章推荐
- [004]微信公众账号开发教程第1篇-根据用户openID获取用户基本信息
- 微信公众平台开发文档 网页授权获取用户基本信息
- 微信开发(三)获取用户信息,同时整理代码
- 微信公众平台开发文档 网页授权获取用户基本信息
- Ruby on Rails微信开发4——通过网页授权获取用户的基本信息
- nodejs微信开发--网页获取用户授权信息
- 微信公众平台开发文档 获取用户基本信息
- 【微信】根据appid, secret, code获取用户基本信息
- 微信开发(七)微信网页授权( Oauth )通过Oauth获取用户信息
- 用c#开发微信(2)扫描二维码,用户授权后获取用户基本信息 (源码下载)
- 微信开发——通过授权获取用户的基本信息
- 微信开发笔记——微信网页登录授权,获取用户信息
- 微信开发笔记——微信网页登录授权,获取用户信息
- 微信开发获取用户信息的时候提示redirect_uri参数错误
- 微信开发公共服务平台开发(.Net) - 网页授权获取用户基本信息
- 【微信开发】获取用户信息
- 微信公众平台开发文档 获取用户基本信息
- 微信快速开发框架(八)-- V2.3--增加语音识别及网页获取用户信息,代码已更新至Github
- PHP微信开发---根据用户回复的关键词和位置,返回附近的信息
- 微信开发笔记——微信网页登录授权,获取用户信息