微信公众号如何获取用户unionid

前提条件,获取unionid,公众号需经过认证。

公众号如何获取unionid

1 网页接口授权

2 添加白名单

3 在公众号菜单中,添加一个子菜单,配置为网页链接

网页地址的格式如下

https://open.weixin.qq.com/connect/oauth2/authorize?appid=*****&redirect_uri=******&response_type=code&scope=snsapi_base&state=123#wechat_redirect

其中,appid,为你的公众号的appid,转发地址,redirect_uri为一个你可以控制的url地址,需经过urlcode,可以在https://i.csdn.net/#/uc/profile类似的工具里面做转化。

这个redirect_uri所在的地址,就是上面你所配置的授权域名所在的地址,也是网页白名单所在的地址

 

4 接下来我们看公众号,如何获取用户unionId,

在你的redirect_uri所指向的网页中,你的代码应该是这样的

<?php include("UserManager.php"); ?>
<?php
$code = $_GET["code"];
    function openid($code){
        $secret = "yoursecret";
        $appid = "yourappid";
        //$appid = "wxcba3f82c9a02d6f6";
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$secret."&code=".$code."&grant_type=authorization_code";

        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_TIMEOUT,30);

        $content = curl_exec($ch);
        $status = (int)curl_getinfo($ch,CURLINFO_HTTP_CODE);
        if ($status == 404) {
            return $status;
        }
        $obj = json_decode($content,true);
        $manager = new UserManager;
//$token_file = fopen("ssh/token.txt", "r") or die("Unable to open file!");
        $access_token = $manager->getFuwuhaoAccessToken($appid);
        if ($access_token == ""){
                curl_close($ch);
        return "token not found";
}
        //$access_token = fgets($token_file);
        //fclose($token_file);
        //return 'code:'.$code.'openid:'.$obj["openid"].'token_file:'.$access_token;
        $openid = $obj["openid"];
//echo "openid:".$openid;
        $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";

        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_POST,1);
        $content = curl_exec($ch);
 $status = (int)curl_getinfo($ch,CURLINFO_HTTP_CODE);
        if ($status == 404){
                curl_close($ch);
                return $status;
        }
        curl_close($ch);
        $objunionid = json_decode($content,true);
        $unionid = $objunionid["unionid"];
//echo "unionid:".$unionid." appid:".$appid." openid:".$openid;
        $manager->updatelastonlineOfFuwuhao($appid,$unionid,$openid);
        return 'openid:'.$obj["openid"].' token_file:'.$access_token.' unionid:'.$unionid;
        return var_dump($content);
       // return json_decode($content,true);
    }

openid($code);
echo "<h1>绑定成功</h1>";
?>

appid和secret在哪里呢?

你可能发现了,在里面有个accesstoken,这个怎么获取呢?

直接给你代码

<?php
        $ch = curl_init(); //初始化一个CURL对象
        $appid = "your appid";
        $secret = "your开发秘钥";
        
        curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret);//设置你所需要抓取的URL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置curl参数,要求结果是否
输出到屏幕上,为true的时候是不返回到网页中,假设上面的0换成1的话,那么接下来的$data就需要echo一下。
        $data = json_decode(curl_exec($ch));
        if($data->access_token){
        echo "我就是access_token".$data->access_token;
        }
?>

更多咨询,可以填充表单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值