網頁授權頁面,初次授權接入的時候沒啥問題,可一旦刷新頁面或者返回都會報錯!解決辦法,使用session保存第一次獲取到的用戶信息,還有用草料二維碼的話,最后一次返回也會出錯,但把授權鏈接放在公眾號內部就可以了。
授權頁面代碼如下:
index.php頁面,在tp5下面的。
<?php namespace app\home\controller; use think\Controller; //define your token Class Index extends Base { public function index() { session_start();//開啟session if($_SESSION['openid']){ return $this->fetch('Lists/lists'); }else{ $code=$_GET["code"]; $userinfo_array=$this->getUserInfo($code); $_SESSION['openid']=$userinfo_array['openid']; $_SESSION['headimgurl']=$userinfo_array['headimgurl']; return $this->fetch('Lists/lists'); } } public function getUserInfo($code) { $appid="XXXXX";//修改為你自己的 $appseret="XXXXXX";//修改為你自己的 $access_token=""; //根據code獲得網頁Access Token $access_token_url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appseret&code=$code&grant_type=authorization_code"; $access_token_json=$this->https_request( $access_token_url); $access_token_array=json_decode($access_token_json,true);//轉換為數組,若不寫true則會轉換為數組對象 $access_token=$access_token_array['access_token']; $openid=$access_token_array['openid']; //根據openid和access_token獲得用戶信息 $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; } }
使用session可以解決