PHP实现微信获取用户基本信息头像、昵称等的方法:

个人订阅号暂时不支持获取这些参数!
<?php
error_reporting(1);
header('Content-type:text/html; Charset=utf-8');
/* 配置开始 */
$appid = ''; //微信公众平台->开发->基本配置->AppID
$appKey = ''; //微信公众平台->开发->基本配置->AppSecret
/* 配置结束 */
//①、获取用户openid
$wxPay = new WxService($appid,$appKey);
$data = $wxPay->GetOpenid(); //获取openid
if(!$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>
<?php
class 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允许执行的*长秒数 ww.
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;
}
}
# 网站推广优化靠谱
# webkit
# 精英关键词排名答疑解惑
# 东莞仓储seo攻略
# 夸克的网站建设情况
# 镇江实力强的推广网站
# 网站建设具体报价怎么写
# 饮料营销方案与推广方案
# 北京网站界面优化
# 网站优化设计目标分析
# 成交型网站建设设计
# content
# 淘宝天猫seo主要优化
# 益阳网站建设开发
# 苏州相城网站推广
# 宿州营销推广费用多少
# 新企业网站如何优化
# 荣昌短视频seo哪家好
# 深圳校园网站推广怎么做
# 南阳seo制作哪家好
# 儋州短视频seo优化
# 宣传推广哪些网站比较好
# title
# 织梦CMS教程
# 微信获取用户基本信息
# 头像、昵称
# 跳转
# 基本配置
# 不支持
# 后会
# 跳转到
# 此时会
# maximum
# PHP实现微信获取用户基本信息头像、昵称等
# demo
# cdn
# bootcss
# https
# link
# href
# UA
# Compatible
# edge
# equiv
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化91478 】
【
技术知识72672 】
【
云计算0 】
【
GEO优化84317 】
【
优选文章0 】
【
营销推广36048 】
【
网络运营41350 】
【
案例网站102563 】
【
AI智能45237 】
相关推荐:
如何在Windows 2008云服务器安全搭建网站?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
平台云上自主建站:模板化设计与智能工具打造高效网站
建站之星登入步骤与常见问题解析?
织梦显示英文日期时间的方法_织梦CMS教程
通过sql查询的方法调用栏目SEO标题、栏目描述和关键字_织梦CMS教程
建站主机如何选?高性价比方案全解析
如何通过主机屋免费建站教程十分钟搭建网站?
如何在云指建站中生成FTP站点?
建站之星如何通过成品分离优化网站效率?
如何用AWS免费套餐快速搭建高效网站?
织梦安全代码让网站远离劫持_织梦CMS教程
织梦dedecms cookies泄漏导致SQL漏洞修复_织梦CMS教程
如何实现建站之星域名转发设置?
织梦dedecms自定义标签liketags调用tag/keyword相同的相关文章_织梦CMS教程
魔毅自助建站系统:模板定制与SEO优化一键生成指南
建站之星模板安装失败:PHP版本不兼容?
织梦dedecms动态获取会员总数方法_织梦CMS教程
织梦dedecms手机站与PC站同步生成静态文件html教程_织梦插件
织梦cms栏目列表首页与*页重复解决方法 _织梦CMS教程
建站之星模板与系统推荐:一站式智能建站解决方案
宝塔面板创建网站无法访问?如何快速排查修复?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
如何配置支付宝与微信支付功能?
织梦让广告延时加载显示,网站主要内容打开后才开始加载广告_织梦CMS教程
如何在阿里云服务器自主搭建网站?
建站主机SSH密钥生成步骤及常见问题解答?
织梦dedecms自带文本编辑器ckeditor更换为kindeditor编辑器带代码高亮_织梦CMS教程
织梦官方php服务器环境DedeAMPZ安装教程_织梦CMS教程
织梦一级目录作域名list.php无法跳转到手机站解决方法_织梦CMS教程
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
织梦dedecms手机搜索跳转到手机搜索模板教程_织梦CMS教程
如何在橙子建站上传落地页?操作指南详解
如何选择适合PHP云建站的开源框架?
如何快速生成橙子建站落地页链接?
寿县云建站:智能SEO优化与多行业模板快速上线指南
phpcms ajax列表分页无限加载教程_PHPCMS教程
如何通过VPS搭建网站快速盈利?
如何通过服务器快速搭建网站?完整步骤解析
建站之星ASP如何实现CMS高效搭建与安全管理?
如何在IIS服务器上快速部署高效网站?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何用花生壳三步快速搭建专属网站?
如何通过VPS建站无需域名直接访问?
织梦TAG标签字数长度限制解决方法_织梦CMS教程
如何在织梦DEDECMS上运行php代码和mysql语句_织梦CMS教程
如何快速搭建虚拟主机网站?新手必看指南
如何确保FTP站点访问权限与数据传输安全?
织梦列表页调用TAG标签并带上链接的实现教程_织梦CMS教程
织梦二级域名附件相对路径修改*路径链接_织梦CMS教程
2019-11-16
南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。