PHP实现微信获取用户基本信息头像、昵称等_织梦CMS教程


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

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

南京市珐之弘网络技术有限公司


南京市珐之弘网络技术有限公司

南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 87067657

 13565296790

 87067657@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.