微信公众号网页授权40163问题
tp5为例,emmmm…一直报40163或40029问题,翻遍了各大网站都没找到合适我的办法。
如图:
解决之后如图:
因为重定向所以请求了两次code,所以一直报40163错误。所以,我改了改代码:
public function _initialize()
{parent::_initialize(); $this->appid = '微信公众号APPID';//appid$this->secret = '微信公众号secret'; //secrect$this->redirect_uri = '回调域名地址';//返回的域名网址 }
//第一步获得code
public function index_down()
{$weixin = new WechatAuth($this->appid,$this->secret);$url = $weixin->getRequestCodeURL($this->redirect_uri) ;header("Location:".$url);
}
//第二步 判断code,获得用户信息public function index(){ $code = $_GET["code"]; if (isset($_GET['code'])){ $userinfo = $this->get_user_info($code); }else{echo "no code";}}
public function get_user_info($code)
{ $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=". $this->appid ."&secret=".$this->secret. "&code=".$code. "&grant_type=authorization_code";$access_token_json = $this->https_request($access_token_url);//自定义函数$access_token_array = json_decode($access_token_json,true); $access_token = $access_token_array['access_token']; $openid = $access_token_array['openid']; $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid";$userinfo_json = $this->https_request($userinfo_url);$userinfo_array = json_decode($userinfo_json,true);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;
}
因为重定向请求了两次,所以会提示code已经被使用。没有获取unionID,因为还没绑定开放平台。