Использован отчетный код авторизации WeChat, подсказки: [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);
}

При первом входе мы можем получить возвращенные данные в обычном режиме, но они не будут работать, если мы их обновим. Почему?

Правильно, параметр кода, который он использовал во второй раз, был получен впервые, а код WeChat можно использовать только один раз:

Описание кода: код используется в качестве билета в обмен на access_token. Код, который несет пользователь, будет каждый раз отличаться. Код можно использовать только один раз, и срок его действия автоматически истечет, если он не будет использоваться в течение 5 минут.

Так что второй раз не получится. Наш нормальный процесс использования должен быть таким:

 

рекомендация

отblog.csdn.net/baidu_39322753/article/details/108847415