php 開發微信公衆號雜記————非登陸獲取用戶信息

用戶關注微信公衆號後,經過公衆號菜單進入某一網站,此網站獲取用戶的相關信息json

        $appid = "kjklj8+98+989878";    //本身公衆號的APPID
        $secret = "jdjkjka564564456564564564";    //本身公衆號的 secret  ,須要自行設置

        if(!$this->session->userdata('openid')){
            if(empty($_GET['code'])){
                //這是要回調地址能夠有別的寫法
                $url = '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
                $j_access_token=file_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$secret}&code={$_GET['code']}&grant_type=authorization_code");
                $a_access_token=json_decode($j_access_token,true);
//                $access_token=$a_access_token["access_token"];//雖然這裏 也獲取了一個access_token,可是和獲取用戶詳情,還有發送模板信息所使用的access_token不一樣
                $openid=$a_access_token["openid"];

                $this->session->set_userdata('openid', $openid);

            }
        }

        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;

        $output = https_request($url);
        $access_token_Arr    = json_decode($output,true);
        $access_token        =   $access_token_Arr['access_token'];

        $OpenID                 = $this->session->userdata('openid');
        $get_userinfo = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={$access_token}&openid={$OpenID}&lang=zh_CN";
        $userinfo = json_decode(https_request($get_userinfo),true);print_r($userinfo);die

這段代碼我寫在了一個Public控制器,全部的控制器都繼承Public,$userinfo就是當前的微信用戶的所用信息,具體見返回結果,或者api

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839微信

相關文章
相關標籤/搜索