微信公众号网页授权40163问题【php】

微信公众号网页授权40163问题

world妈耶,作为小菜鸟真的是被微信给折磨得欲仙欲死(~ ̄(OO) ̄)ブ
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,因为还没绑定开放平台。

猜你喜欢

转载自blog.csdn.net/weixin_41023117/article/details/80078719