微信授權報code been used, hints: [ req_id: XYv1Ha07042046 ]

spring_root發表於2020-09-28

 


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只能用一次:

code說明:code作為換取access_token的票據,每次使用者授權攜帶的code將不一樣,code只能使用一次,5分鐘未被使用將自動過期.

所以第二次用的時候就不行了。我們正常的使用流程應該這樣:

 

相關文章