php如何获取微信用户基本信息(代码)

php如何获取微信用户基本信息(代码)

内容导读

收集整理的这篇技术教程文章主要介绍了php如何获取微信用户基本信息(代码),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5586字,纯文字阅读大概需要8分钟

内容图文

本篇文章给大家带来的内容是关于php如何获取微信用户基本信息(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
<?phperror_reporting(1);header('Content-type:text/html; Charset=utf-8');/* 配置开始 */$appid = '';
//微信公众平台->开发->基本配置->AppID$appKey = '';
 //微信公众平台->开发->基本配置->AppSecret/* 配置结束 *///①、获取用户openid$wxPay = new WxService($appid,$appKey);$data = $wxPay->GetOpenid();


//获取openidif(!$data['openid']) exit('获取openid失败');//②、获取用户信息$user = $wxPay->getUserInfo($data['openid'],$data['access_token']);?><!DOCTYPE html><html><head>

<meta charset="UTF-8">

<meta name="renderer" content="webkit" />

<meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />

<title>微信获取用户信息demo</title>

<link href="https://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet">

<script src="https://cdn.bootcss.com/jquery/2.1.0/jquery.min.js"></script></head><body><div>

<div>



<h1>你的基本信息如下:</h1>



<table class="table table-bordered">





<tr>







<td>openid</td>







<td><?=$user['openid']?></td>





</tr>





<tr>







<td>unionid</td>







<td><?=$user['unionid']?></td>





</tr>





<tr>







<td>昵称</td>







<td><?=$user['nickname']?></td>





</tr>





<tr>







<td>头像</td>







<td><img src="<?=$user['headimgurl']?>" style="width: 100px;" alt=""></td>





</tr>












 <tr>







<td>性别</td>







<td><?php









switch (strtoupper($user['sex'])){











case 1:













echo '男性';













break;











case 2:













echo '女性';













break;











default:













echo '未知';













break;









}









?></td>





</tr>





<tr>







<td>省份 / 城市</td>







<td><?=$user['province'].' / '.$user['city']?></td>





</tr>





<tr>







<td>language</td>







<td><?=$user['language']?></td>





</tr>



</table>

</div></div></body></html><?phpclass WxService{

protected $appid;

protected $appKey;

public $data = null;

public function __construct($appid, $appKey)

{



$this->appid = $appid; //微信支付申请对应的公众号的APPID



$this->appKey = $appKey; //微信支付申请对应的公众号的APP Key

}

/**

 * 通过跳转获取用户的openid,跳转流程如下:

 * 1、设置自己需要调回的url及其其他参数,跳转到微信服务器https://open.weixin.qq.com/connect/oauth2/authorize

 * 2、微信服务处理完成之后会跳转回用户redirect_uri地址,此时会带上一些参数,如:code

 *

 * @return 用户的openid

 */

public function GetOpenid()

{



//通过code获得openid



if (!isset($_GET['code'])){





//触发微信返回code码





$baseUrl = $this->getCurrentUrl();





$url = $this->__CreateOauthUrlForCode($baseUrl);





Header("Location: $url");





exit();



} else {





//获取code码,以获取openid





$code = $_GET['code'];





$openid = $this->getOpenidFromMp($code);





return $openid;



}

}

public function getCurrentUrl()

{



$scheme = $_SERVER['HTTPS']=='on' ? 'https://' : 'http://';



$uri = $_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING'];



if($_SERVER['REQUEST_URI']) $uri = $_SERVER['REQUEST_URI'];



$baseUrl = urlencode($scheme.$_SERVER['HTTP_HOST'].$uri);



return $baseUrl;

}

/**

 * 通过code从工作平台获取openid机器access_token

 * @param string $code 微信跳转回来带上的code

 * @return openid

 */

public function GetOpenidFromMp($code)

{



$url = $this->__CreateOauthUrlForOpenid($code);







$res = self::curlGet($url);



$data = json_decode($res,true);



$this->data = $data;



return $data;

}

/**

 * 构造获取open和access_toke的url地址

 * @param string $code,微信跳转带回的code

 * @return 请求的url

 */

private function __CreateOauthUrlForOpenid($code)

{



$urlObj["appid"] = $this->appid;



$urlObj["secret"] = $this->appKey;



$urlObj["code"] = $code;



$urlObj["grant_type"] = "authorization_code";



$bizString = $this->ToUrlParams($urlObj);



return "https://api.weixin.qq.com/sns/oauth2/access_token?".$bizString;

}

/**

 * 构造获取code的url连接

 * @param string $redirectUrl 微信服务器回跳的url,需要url编码

 * @return 返回构造好的url

 */

private function __CreateOauthUrlForCode($redirectUrl)

{



$urlObj["appid"] = $this->appid;



$urlObj["redirect_uri"] = "$redirectUrl";



$urlObj["response_type"] = "code";



$urlObj["scope"] = "snsapi_userinfo";



$urlObj["state"] = "STATE";



$bizString = $this->ToUrlParams($urlObj);



return "https://open.weixin.qq.com/connect/oauth2/authorize?".$bizString;

}

/**

 * 拼接签名字符串

 * @param array $urlObj

 * @return 返回已经拼接好的字符串

 */

private function ToUrlParams($urlObj)

{



$buff = "";



foreach ($urlObj as $k => $v)



{





if($k != "sign") $buff .= $k . "=" . $v . "&";



}



$buff = trim($buff, "&");



return $buff;

}

/**

 * 获取用户信息

 * @param string $openid 调用【网页授权获取用户信息】接口获取到用户在该公众号下的Openid

 * @return string

 */

public function getUserInfo($openid,$access_token)

{



$response = self::curlGet('https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN');



return json_decode($response,true);





}

public static function curlGet($url = '', $options = array())

{



$ch = curl_init($url);



curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);



curl_setopt($ch, CURLOPT_TIMEOUT, 30);



if (!empty($options)) {





curl_setopt_array($ch, $options);



}



//https请求 不验证证书和host



curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);



curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);



$data = curl_exec($ch);



curl_close($ch);



return $data;

}

public static function curlPost($url = '', $postData = '', $options = array())

{



if (is_array($postData)) {





$postData = http_build_query($postData);



}



$ch = curl_init();



curl_setopt($ch, CURLOPT_URL, $url);



curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);



curl_setopt($ch, CURLOPT_POST, 1);



curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);



curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数



if (!empty($options)) {





curl_setopt_array($ch, $options);



}



//https请求 不验证证书和host



curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);



curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);



$data = curl_exec($ch);



curl_close($ch);



return $data;

}}

以上就是php如何获取微信用户基本信息(代码)的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的php如何获取微信用户基本信息(代码)全部内容,希望文章能够帮你解决php如何获取微信用户基本信息(代码)所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com