tp5+微信公众号获取用户基本信息

2019-02-21   阅读:3166   分类:后端    标签: 微信开发

获取用户基本信息(UnionID机制)

获取用户基本信息(UnionID机制)

在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。

请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。

UnionID机制说明:

开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

获取用户基本信息(包括UnionID机制)

开发者可通过OpenID来获取用户基本信息。请使用https协议。

接口调用请求说明
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明

image.png

返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

{
    "subscribe": 1, 
    "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", 
    "nickname": "Band", 
    "sex": 1, 
    "language": "zh_CN", 
    "city": "广州", 
    "province": "广东", 
    "country": "中国", 
    "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
    "subscribe_time": 1382694957,
    "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
    "remark": "",
    "groupid": 0,
    "tagid_list":[128,2],
    "subscribe_scene": "ADD_SCENE_QR_CODE",
    "qr_scene": 98765,
    "qr_scene_str": ""
}

参数说明

image.png

实例:thinkphp5+微信公众号获取用户基本信息

<?php
namespace app\wxapiswh\controller;
use think\Controller;
error_reporting(0); 
// 基本设置
class Weixin extends Controller
{
    public function head_user(){
     $weixin_config=\think\Db::name('wx_setupdb')->find();
       $appid=$weixin_config['appid'];
    $redirect_uri = urlencode ( 'https://www.tpxhm.com/wxapiswh/Weixin/getUser' );//将字符串以 URL 编码。
    $url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&
    response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
     header("Location:".$url);//header() 函数向客户端发送原始的 HTTP 报头。
    }
    public function getUser(){
     header("content-type:text/html;charset=utf-8");
    $code = $_GET["code"];//预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。
    if (isset($_GET['code'])){//判断code是否存在
        $userinfo = $this->getUserInfo($code);
        $nickname = $userinfo['nickname'];//获取nickname对应的值,即用户名
        $headimgurl = $userinfo['headimgurl'];
        $city = $userinfo['city'];
        $country = $userinfo['country'];
        $province = $userinfo['province'];
        echo "<style >*{margin:0; padding:0;}body{max-width:640px; margin:0 auto}</style>\n";
        echo "<!doctype html><html><head><meta content=\"width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0\" name=\"viewport\"><body>\n";
        print '<div style="width:100%; height:100vh; margin:0 auto; background:#00161c"><div style="width:200px;  margin:0 auto; border:2px solid #fff; border-radius:10px;">';
        print '<img style=" display:block; margin:0 auto; padding-top:150px;" src="'.$headimgurl.'" width="180px" height="180px;" />';//打印输出
        print '<h2 style="text-align:left;font-size:20px; color:#fff;font-weight:normal;  line-height:24px; padding-top:5px;">用户名:'.$nickname.'</h2>';//打印输出
        print '<h2 style="text-align:left; font-size:20px; font-weight:normal; color:#fff;line-height:24px; padding-top:5px;">城市:'.$country.'-'.$province.'-'.$city.'</h2>';//打印输出
        print '</div></div>';
        print '</body></html>';
        

    }else{
        echo "NO CODE";
    }
    }
    public function getUserInfo($code)
    {
     $weixin_config=\think\Db::name('wx_setupdb')->find();
       $appid=$weixin_config['appid'];
        $appsecret = $weixin_config['appsecret'];

        //Get access_token
        $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
        $access_token_json = $this->https_request($access_token_url);//自定义函数
        $access_token_array = json_decode($access_token_json,true);//对 JSON 格式的字符串进行解码,转换为 PHP 变量,自带函数
        //获取access_token
        $access_token = $access_token_array['access_token'];//获取access_token对应的值
        //获取openid
        $openid = $access_token_array['openid'];//获取openid对应的值
        //Get user info
        $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
        $userinfo_json = $this->https_request($userinfo_url);
        $userinfo_array = json_decode($userinfo_json,ture);
        return $userinfo_array;
    }
    public function https_request($url)//自定义函数,访问url返回结果
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl,  CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($curl);
        if (curl_errno($curl)){
            return 'ERROR'.curl_error($curl);
        }
        curl_close($curl);
        return $data;
    }

}

效果:

QQ图片20190221223542.png

【腾讯云】 爆款2核2G3M云服务器首年 61元,2核2G4M云服务器新老同享 99元/年,续费同价

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://www.tpxhm.com/adetail/106.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸一
简忆博客壁纸二
简忆博客壁纸三
简忆博客壁纸四
简忆博客壁纸五
简忆博客壁纸六
简忆博客壁纸七
简忆博客壁纸八
头像

简忆博客
勤于学习,乐于分享

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×