通八洲科技

微信扫码登录回调PHP怎么接收_处理扫码登录code参数方法【教程】

日期:2026-01-02 00:00 / 作者:蓮花仙者
微信扫码登录回调中需用$_GET['code']获取code参数,因微信通过GET方式重定向并附带code;务必先isset检查,再配合state校验防CSRF,随后用cURL请求access_token接口,切勿用file_get_contents拼接URL。

微信扫码登录回调里怎么拿到 code 参数

微信扫码登录成功后,会重定向到你配置的 redirect_uri,并附带一个临时授权码 code。这个 code 只能用一次,5分钟内有效,PHP 后端必须在回调 URL 的入口脚本里立刻获取它。

常见错误是:用 $_POST 去取 —— 实际上微信是通过 GET 方式跳转的,code 在 URL 查询参数里。

code 换取 access_token 和用户信息的 PHP 请求写法

拿到 code 后,要调用微信 OAuth2 接口:https://api.weixin.qq.com/sns/oauth2/access_token,用 GET 请求带上 4 个必要参数:你的 appidsecretcode 和固定值 grant_type=authorization_code

注意点:

$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?' . http_build_query([
    'appid' => 'your_appid',
    'secret' => 'your_appsecret',
    'code' => $_GET['code'],
    'grant_type' => 'authorization_code'
]);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);

$data = json_decode($res, true);
if (isset($data['errcode'])) {
    // 处理错误,比如记录日志、跳转错误页
    die('微信接口错误:' . $data['errmsg']);
}

拿到 openid 后要不要再调用 sns/userinfo

取决于你要不要用户的昵称、头像等敏感信息。微信对 sns/userinfo 接口做了限制:

PHP 回调逻辑里最容易漏掉的三件事

很多线上问题不是代码写错,而是关键环节没兜住:

真正麻烦的从来不是“怎么拿到 code”,而是“怎么安全地用完它还不留后患”。尤其是 code 一次性、access_token 短时效、openid 不跨应用通用这几个特性,容易让人下意识当成普通 token 来用。