后端开发

网络新概念,云计算、大数据、O2O、电商。。。。

微信开发公众号获取openid

官方微信授权说明:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

关于网页授权access_token和普通access_token的区别
1、微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;没有调用次数限制
2、其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。每天2000次

public function getopenid(){
    $openid='';
       if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
               //echo 'sssss';
               $appid = $this->wx_config['appid']; //我把微信的appid 写成了全局变量
               $secret = $this->wx_config['appsecret'];//同上

               if(empty($_GET['code'])){
                   $url = urlencode('http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]); //这是要回调地址可以有别的写法
                   redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$url}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect");
                   //重定向到以上网址,这是微信给的固定地址.必须格式一致
               }else{
                   //回调成功,获取code,再做请求,获取openid
                   //$url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
                   //$access_token=$this->_get_access_token();
                   $code=$_GET['code'];
                   $weixin =  file_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$secret}&code=".$code."&grant_type=authorization_code");//通过code换取网页授权access_token
                   $jsondecode = json_decode($weixin); //对JSON格式的字符串进行编码
                   $array = get_object_vars($jsondecode);//转换成数组
                   $openid = $array['openid'];//输出openid
                   //echo $openid;
               }
       }
   }


TAG: 微信开发