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);
}
最初に入力したときは、返されたデータを正常に取得できますが、更新すると機能しません。これはなぜですか。
そうです、彼が2回目に使用したコードパラメータは初めて取得されたものであり、WeChatのコードは1回しか使用できません。
コードの説明:コードはaccess_tokenと引き換えにチケットとして使用されます。ユーザーが携帯するコードは毎回異なります。コードは1回しか使用できず、5分間使用しないと自動的に期限切れになります。
したがって、2回目は機能しません。通常の使用プロセスは次のようになります。