🔐 微信登录接口文档
快速接入微信登录,支持PC扫码和H5授权两种模式,提供JWT和Token两种对接方式
概述
wxlogin平台为开发者提供简单易用的微信登录接口服务。通过我们的平台,您可以无需经过复杂的微信官方认证流程,快速为您的应用接入微信登录功能。
• 无需企业认证,个人开发者即可使用
• 接入简单,3步即可完成对接
• 支持PC扫码、H5、微信内多种场景
• 数据加密传输,安全可靠
• 提供两种对接方式:Token查询 和 JWT解密
接入流程
快速开始
1. 注册并创建应用
首先需要在wxlogin平台注册账号,然后在"我的网站"中创建一个新的应用。创建成功后,您将获得唯一的 AppID 和 AppSecret。
2. 配置回调地址
在应用设置中配置您的回调地址(PC返回地址 / H5返回地址),用于接收微信登录成功后的数据回调。
3. 选择对接方式
🔹 方式一:Token查询(推荐)
登录成功后URL返回
token 参数,通过token调用接口获取用户信息,无需解密,最简单。🔹 方式二:JWT解密
登录成功后URL返回
data 参数,使用AppSecret解密JWT数据获取用户信息。
登录接口
PC扫码登录地址
适用于PC网站,跳转到二维码登录界面,用户扫码登录后,系统会携带 data 和 token 参数跳转到后台配置的PC返回地址。
// PC端扫码登录 https://wxlogin.com/jwt?appid={您的AppID}
H5登录地址
适用于微信H5网页,无需扫码,用户点击授权登录后,系统会携带 data 和 token 参数跳转到后台配置的H5返回地址。
// H5端登录 https://wxlogin.com/jwth5?appid={您的AppID}
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| appid | string | 必填 | 您在平台创建应用时获得的AppID |
| scope | string | 可选 | snsapi_userinfo 或 snsapi_base |
| tpl | string | 可选 | 扫码页面风格ID,默认是1,可选2、3 |
•
snsapi_userinfo 需要用户点击授权按钮,可获得用户昵称和头像•
snsapi_base 静默登录只获取openid
登录成功回调URL
用户扫码/授权登录成功后,系统会跳转到您在后台配置的回调地址,URL中携带 data 和 token 两个参数:
// 假设后台配置的PC返回地址为:https://note.5811.cn/main/return // 登录成功后跳转到: https://note.5811.cn/main/return?data=ZnpONXZkUlZD***UDgc6XJ&token=sdfwwUUISD234sdfe // data: 加密的用户数据(用于JWT解密方式) // token: 当前用户密钥(用于Token查询方式)
获取用户信息
扫码登录后,返回的URL中包含一个 token 参数。通过token调用下面的接口即可获取当前用户资料,无需解密,最简单的方式。
// 通过token获取登录用户资料 接口地址:https://wxlogin.com/wxuser/userinfo 请求方式:POST Head头部:Content-Type: application/json // 请求参数(JSON Body) { "token": "回调URL中获取的token值" }
请求参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| token | string | 必填 | 登录成功后回调URL中携带的token参数 |
{
"code": 200,
"msg": "获取成功",
"data": {
"id": "672",
"appid": "wxB2WA_9i2KK",
"openid": "6a235gjyv2ZpnAuSZ8rMKXHdTygLb7wMAHdfM0KuLURmVwUtuhNdO09bGWBRi1A9",
"unionid": null,
"nickname": "曹え 5811",
"sex": "0",
"province": null,
"city": null,
"country": null,
"headimgurl": "https://thirdwx.qlogo.cn/mmopen/vi_32/***oZB6jHEyIa3b9ee46xf8iaItypib0g8/132",
"addtime": "2025-03-27 11:16:24",
"logintime": "2025-10-24 11:05:27",
"wx_openid": "o-B8Qt1OeLeIM2Yh8mJLiT3nulJg",
"token": "qIeHaA1kCLfh4Wt0xHK_9FxYxrupjS9e"
}
}
返回参数说明
| 参数名 | 说明 |
|---|---|
| id | 用户在平台上的唯一ID |
| appid | 所属应用ID |
| openid | 用户的openid(平台加密后的) |
| unionid | 开放平台的unionid(如有) |
| nickname | 微信昵称 |
| sex | 性别(0未知/1男/2女) |
| headimgurl | 微信头像URL |
| wx_openid | 微信原始openid |
| token | 当前登录token |
接收回调URL中的 data 参数,配合您的 AppSecret 进行JWT解密,直接得到用户信息的JSON数据。
{
"appid": "wx8888888888",
"openid": "AZf_FAVqS84myGfwQOuq6oIZZQIv5bU7171580072",
"nickname": "曹え5811",
"headimgurl": "https://thirdwx.qlogo.cn/mmopen/vi_32/***Ia3b9ee46xf8iaItypib0g8/132",
"sex": "0"
}
解密参数说明
| 参数 | 说明 |
|---|---|
| appid | 应用id |
| openid | 用户的openid |
| nickname | 微信昵称 |
| headimgurl | 微信头像 |
| sex | 性别 |
• 回调URL中的
data 参数是一个JWT令牌• 使用您的
AppSecret 作为密钥,算法为 HS256• 解密后即可获得包含用户信息的JSON对象
• 具体解密代码请参考下方的代码示例
代码示例
Token方式(推荐)
使用Token方式,无需JWT解密,只需从回调URL获取token参数,然后调用API获取用户信息。
// npm install express axios const express = require('express'); const axios = require('axios'); const app = express(); const APPID = '您的AppID'; // 首页 - 生成登录链接 app.get('/', (req, res) => { const loginUrl = `https://wxlogin.com/jwt?appid=${APPID}`; res.send(`<h1>微信登录示例</h1><a href="${loginUrl}">点击微信登录</a>`); }); // 登录回调地址 - 接收token并获取用户信息 app.get('/callback', async (req, res) => { const { token, data } = req.query; if (!token) { return res.send('登录失败:缺少token参数'); } try { // 通过token调用接口获取用户信息 const response = await axios.post('https://wxlogin.com/wxuser/userinfo', { token: token }, { headers: { 'Content-Type': 'application/json' } }); const result = response.data; if (result.code === 200) { const user = result.data; console.log('登录成功:', user.nickname, user.openid); // TODO: 在这里处理您的业务逻辑 // 1. 查询数据库是否已有该openid的用户 // 2. 如果没有,创建新用户 // 3. 如果有,更新登录时间 // 4. 生成session或JWT保持登录状态 res.send(`<h1>登录成功!</h1><p>昵称:${user.nickname}</p><p>OpenID:${user.openid}</p><img src="${user.headimgurl}" width="100">`); } else { res.send(`获取用户信息失败:${result.msg}`); } } catch (error) { console.error('请求失败:', error.message); res.send('登录异常,请重试'); } }); app.listen(3000, () => { console.log('服务器运行在 http://localhost:3000'); });
JWT解密方式
使用JWT解密方式,需要在服务端使用AppSecret解密data参数。
// npm install express jsonwebtoken const express = require('express'); const jwt = require('jsonwebtoken'); const app = express(); const APPID = '您的AppID'; const APP_SECRET = '您的AppSecret'; // 首页 - 生成登录链接 app.get('/', (req, res) => { const loginUrl = `https://wxlogin.com/jwt?appid=${APPID}`; res.send(`<h1>微信登录示例(JWT方式)</h1><a href="${loginUrl}">点击微信登录</a>`); }); // 登录回调地址 - 解密JWT数据获取用户信息 app.get('/callback', (req, res) => { const { data } = req.query; if (!data) { return res.send('登录失败:缺少data参数'); } try { // 使用AppSecret解密JWT数据 const decoded = jwt.verify(data, APP_SECRET); console.log('解密后的用户数据:', decoded); // decoded 包含:appid, openid, nickname, headimgurl, sex // TODO: 处理您的业务逻辑 res.send(`<h1>登录成功!</h1><p>昵称:${decoded.nickname}</p><p>OpenID:${decoded.openid}</p><img src="${decoded.headimgurl}" width="100">`); } catch (error) { console.error('JWT解密失败:', error.message); res.send('数据解密失败,请检查密钥配置'); } }); app.listen(3000, () => { console.log('服务器运行在 http://localhost:3000'); });
Token方式(推荐)
使用Token方式,无需JWT解密,最简单的对接方式。
// config.php - 配置文件
$APPID = '您的AppID';
$APP_SECRET = '您的AppSecret';
// index.php - 登录页面
$loginUrl = "https://wxlogin.com/jwt?appid=" . $APPID;
echo '<a href="' . $loginUrl . '">点击微信登录</a>';
// callback.php - 登录回调页面
$token = isset($_GET['token']) ? $_GET['token'] : '';
if (empty($token)) {
die('登录失败:缺少token参数');
}
// 通过token调用接口获取用户信息
$postData = json_encode(['token' => $token]);
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://wxlogin.com/wxuser/userinfo',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postData,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_SSL_VERIFYPEER => false,
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
if ($result && $result['code'] == 200) {
$user = $result['data'];
echo "登录成功!<br>";
echo "昵称:" . $user['nickname'] . "<br>";
echo "OpenID:" . $user['openid'] . "<br>";
echo "<img src='" . $user['headimgurl'] . "' width='100'>";
// TODO: 处理您的业务逻辑
// 1. 查询数据库是否已有该openid的用户
// 2. 如果没有,创建新用户
// 3. 如果有,更新登录时间
// 4. 设置session保持登录状态
session_start();
$_SESSION['user'] = $user;
} else {
echo "获取用户信息失败:" . ($result['msg'] ?? '未知错误');
}
?>
JWT解密方式
使用JWT解密方式,需要使用AppSecret解密data参数。
// 使用 firebase/php-jwt 库
// composer require firebase/php-jwt
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
$APPID = '您的AppID';
$APP_SECRET = '您的AppSecret';
// callback.php - 登录回调页面(JWT解密方式)
$data = isset($_GET['data']) ? $_GET['data'] : '';
if (empty($data)) {
die('登录失败:缺少data参数');
}
try {
// 使用AppSecret解密JWT数据
$decoded = JWT::decode($data, new Key($APP_SECRET, 'HS256'));
$user = (array) $decoded;
// $user 包含:appid, openid, nickname, headimgurl, sex
echo "登录成功!<br>";
echo "昵称:" . $user['nickname'] . "<br>";
echo "OpenID:" . $user['openid'] . "<br>";
// TODO: 处理您的业务逻辑
session_start();
$_SESSION['user'] = $user;
} catch (Exception $e) {
echo "JWT解密失败:" . $e->getMessage();
}
?>
• 请将示例中的
您的AppID 和 您的AppSecret 替换为您在平台创建应用时获取的实际值• AppSecret 务必保密,不要暴露在前端代码中
• 回调地址必须与后台配置的地址一致
• 建议使用 HTTPS 协议确保数据传输安全
Skills 技能
什么是 Skills?
Skills 是一种 AI 工具扩展包,下载后直接导入到您的 AI 开发工具中(如 Cursor、Trae 等),即可让 AI 自动理解 wxlogin 的登录接口规范,帮您快速生成完整的登录功能代码。
使用方法
AI 开发提示词
在使用 Cursor、Trae 等 AI 开发工具时,只需在提示词中加入以下内容,AI 即可自动参照文档完成登录功能开发:
登录功能使用第三方登录,参考文档:wxlogin第三方微信登录接入指南.md
回调处理
用户完成微信登录授权后,平台会将 data 和 token 参数回调到您设置的回调地址(PC返回地址 / H5返回地址)。
• 回调地址必须支持 HTTPS 协议
• 回调数据使用您的 AppSecret 加密,请妥善保管密钥
• 建议优先使用 Token 方式获取用户信息,流程更简单
• 回调地址需要在平台后台的"应用设置"中提前配置
错误码说明
| 错误码 | 说明 | 解决方案 |
|---|---|---|
| 10001 | AppID不存在 | 请检查AppID是否正确 |
| 10002 | 应用已禁用 | 请联系管理员处理 |
| 20001 | 数据解密失败 | 请检查AppSecret是否正确 |
| 20002 | Token无效或已过期 | 请重新获取token |
如遇到其他问题,请访问我们的网站获取帮助。