微信公众号网页授权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,因为还没绑定开放平台。