微信网页授权报code been used, hints: [ req_id: XYv1Ha07042046 ]
先贴上代码:
public function index() { $code = input('get.code'); $tool = new Wxtool(); if (empty($code)) { $url = 'http://www.layton.top/wx/Receive'; $tool -> getCode($url, 2); }else { $tool -> getWebAccessToken($code); } }
方法:
public function getCode($url,$type=1) { $redirect_uri = urlencode($url); $scope = null; if($type == 1) { $scope = 'snsapi_base'; }else{ $scope = 'snsapi_userinfo'; } $code = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . APPID .'&redirect_uri=' . $redirect_uri . '&response_type=code&scope=' . $scope . '&state=STATE#wechat_redirect'; header("location:" . $code); } public function getWebAccessToken($code) { $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . APPID . '&secret=' . APPSECRET . '&code=' . $code . '&grant_type=authorization_code'; $data = $this -> http_curl($url, 'get'); dump($data); }
我们第一次进入的时候是可以正常获取返回数据的,但是刷新一下就不行了,这个是为什么呢?
没错,他第二次用的code参数是第一次获取的,微信的code只能用一次:
所以他第二次用的时候就不行了。我们正常的使用流程应该这样: