php获取微信openid方法总结
使用微信接口,无论是自动登录还是微信支付我们首先需要获取的就是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("Location:$url");
exit();
}else{
//获取code码,以获取openid
$code=$_GET['code'];
$access_info=$this->get_access_token($code);
return$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);
if($token_data[0]==200)
{
$ar=json_decode($token_data[1],TRUE);
return$ar;
}
return$token_data[1];
}
publicfunctionhttp($url,$method='',$postfields=null,$headers=array(),$debug=false)
{
$ci=curl_init();
/*Curlsettings*/
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);
if(!empty($postfields)){
curl_setopt($ci,CURLOPT_POSTFIELDS,$postfields);
$this->postdata=$postfields;
}
break;
}
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"=====postdata======\r\n";
var_dump($postfields);
echo'=====info====='."\r\n";
print_r(curl_getinfo($ci));
echo'=====$response====='."\r\n";
print_r($response);
}
curl_close($ci);
returnarray($http_code,$response);
}
}
?>
getOpenid($turl)这个方法就是获取openid的方法。前端调用代码如下:
$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);
if($info){
$openid=$info['openid'];
setcookie('openid',$openid,time()+86400*30);
}
}
以上就是我总结的获取openid的方法啦。
以上就是php获取微信openid的详细内容,更多请关注毛票票其它相关文章!