使用微信接口,无论是自动登录还是微信支付,首先我们需要获取openid。获取openid有两种方式。一是关注时获得。可以获取订阅号,第二种方式是通过网页授权获取,需要认证服务号。今天要说的是第二种获取openid的网页授权。下面是我写的一个获取openid的类app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";}/***获取微信openid*/publicfunctiongetOpenid($turl){if(!isset($_GET['code'])){//触发微信返回code$url=$this->get_authorize_url($turl,$this->state);Header("地址:$url");出口();}else{//获取获取openid$c的代码ode=$_GET['代码'];$access_info=$this->get_access_token($code);返回$access_info;}}/***获取授权token网页授权**@paramstring$code通过get_authorize_url获取到的code*/publicfunctionget_access_token($code=''){$appid=$this->app_id;$appsecret=$this->app_secret;$token_url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";//echo$token_url;$token_data=$this->http($token_url);//var_dump($token_data);如果($token_data[0]==200){$ar=json_decode($token_data[1],TRUE);返回$ar;}返回$token_data[1];}公共函数http($url,$method='',$postfields=null,$headers=array(),$debug=false){$ci=curl_init();/*卷曲设置*/curl_setopt($ci,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);curl_setopt($ci,CURLOPT_CONNECTTIMEOUT,30);curl_setopt($ci,CURLOPT_TIMEOUT,30);curl_setopt($ci,CURLOPT_RETURNTRANSFER,true);switch($method){case'POST':curl_setopt($ci,CURLOPT_POST,true);如果(!empty($postfields)){curl_setopt($ci,CURLOPT_POSTFIELDS,$postfields);$this->postdata=$postfields;}休息;}curl_setopt($ci,CURLOPT_URL,$url);curl_setopt($ci,CURLOPT_HTTPHEADER,$headers);curl_setopt($ci,CURLINFO_HEADER_OUT,true);$response=curl_exec($ci);$http_code=curl_getinfo($ci,CURLINFO_HTTP_CODE);if($debug){echo"=====发布数据======\r\n";var_dump($postfields);回声'=====信息====='。"\r\n";print_r(curl_getinfo($ci));回声'=====$响应====='。"\r\n";打印_r($响应);}curl_close($ci);返回数组($http_code,$response);}}?>getOpenid($turl)该方法前端调用代码如下:$openid=isset($_COOKIE['openid'])?$_COOKIE['openid']:'';if(empty($openid)){$wchat=newwchat();$t_url='http://'.$_SERVER['HTTP_HOST'].'/user.php?act=register';$info=$wchat->getOpenid($t_url);如果($info){$openid=$info['openid'];setcookie('openid',$openid,time()+86400*30);}}以上是我总结的获取openid的方法。以上就是php获取微信openid的详细内容,希望对大家有所帮助。阅读原文:点击查看原文
