接入文档
聚合登录 API 接入说明 · 接口地址 https://dl.6ei.cn/connect.php
接口概述
一次接入,即可使用全部平台的快捷登录能力。
| 接口地址 | https://dl.6ei.cn/connect.php |
|---|---|
| 请求方式 | GET / POST |
| 返回格式 | application/json(UTF-8) |
| 字符编码 | UTF-8 |
接入流程
- 注册账号并创建应用,获取
appid与appkey - 服务端调用登录接口获取授权 URL,跳转用户浏览器进行授权
- 用户授权完成后,第三方平台回调到本站,本站再携带
code回跳你的回调地址 - 你的服务端使用
code调用回调接口,换取用户信息
授权域名必须与应用中配置的域名一致,支持根域名与其子域名。第三方密钥由平台方统一配置,应用侧无需关心授权细节。
快速开始
以 PHP 为例,5 分钟跑通第一次登录。
login.php — 发起登录
$apiurl = 'https://dl.6ei.cn/connect.php';
$appid = '您的APPID';
$appkey = '您的APPKEY';
$type = 'qq';
$redirect_uri = 'https://您的网站/callback.php';
$params = [
'act' => 'login',
'appid' => $appid,
'appkey' => $appkey,
'type' => $type,
'redirect_uri' => $redirect_uri,
'state' => '随机字符串',
];
$result = json_decode(file_get_contents($apiurl . '?' . http_build_query($params)), true);
if ($result['code'] === 0) {
header('Location: ' . $result['url']);
exit;
}
echo '登录失败:' . $result['msg'];
callback.php — 处理回调
$code = $_GET['code'] ?? '';
$params = [
'act' => 'callback',
'appid' => $appid,
'appkey' => $appkey,
'code' => $code,
];
$result = json_decode(file_get_contents($apiurl . '?' . http_build_query($params)), true);
if ($result['code'] === 0) {
$social_uid = $result['social_uid']; // 唯一标识
$nickname = $result['nickname']; // 昵称
$faceimg = $result['faceimg']; // 头像
$gender = $result['gender']; // 0未知 1男 2女
}
登录接口
act=login · 获取第三方授权地址
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
act | 是 | string | 固定值 login |
appid | 是 | string | 应用 ID,在「我的应用」中获取,如 f99abb60a4f4439d |
appkey | 是 | string | 应用密钥,请妥善保管,不要在前端暴露 |
type | 是 | string | 登录平台类型,如 qq、wx、alipay、github |
redirect_uri | 是 | string | 授权成功后的回调地址,必须与应用配置的授权域名匹配,需 URL 编码 |
state | 否 | string | 自定义状态参数,用于防 CSRF 或透传业务数据,回调时原样返回 |
返回参数
| 参数 | 类型 | 说明 |
|---|---|---|
code | int | 0 成功,其他为失败 |
msg | string | 成功为 success,失败为错误描述 |
type | string | 登录类型,与请求一致 |
url | string | 第三方授权页面地址,需 302 跳转到此地址 |
请求示例
GET https://dl.6ei.cn/connect.php?act=login&appid=您的APPID&appkey=您的APPKEY&type=qq&redirect_uri=https%3A%2F%2F您的网站%2Fcallback.php&state=abc123
成功返回
{
"code": 0,
"msg": "success",
"type": "qq",
"url": "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=..."
}
失败返回
{ "code": -1, "msg": "应用不存在或已禁用", "errcode": 102 }
回调接口
act=callback · 用 code 换取用户信息
用户在第三方平台授权成功后,会被跳回你设置的回调地址,URL 中携带 code。请在你的回调页面调用此接口完成兑换。
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
act | 是 | string | 固定值 callback |
appid | 是 | string | 应用 ID,与登录接口一致 |
appkey | 是 | string | 应用密钥 |
code | 是 | string | 回调地址中的 code,一次性使用,有效期 5 分钟 |
返回参数
| 参数 | 类型 | 说明 |
|---|---|---|
code | int | 0 成功;2 等待用户授权中(轮询场景);其他为失败 |
type | string | 登录平台类型 |
social_uid | string | 用户在该平台的唯一标识,同一用户始终相同,建议作为本地账号关联依据 |
access_token | string | 访问令牌,部分平台可用于调用其他 API |
nickname | string | 用户昵称 |
faceimg | string | 用户头像 URL,可能过期,建议转存 |
gender | int | 0 未知,1 男,2 女 |
location | string | 所在地区,如「广东 深圳」,部分平台为空 |
ip | string | 用户授权时的 IP |
成功返回
{
"code": 0,
"msg": "success",
"type": "qq",
"social_uid": "ABCD1234567890",
"access_token": "E8F7D6C5B4A3...",
"nickname": "六擎用户",
"faceimg": "https://thirdqq.qlogo.cn/g?b=oidb&k=xxx",
"gender": 1,
"location": "广东 深圳",
"ip": "113.89.x.x"
}
每个 code 只能使用一次,重复使用会返回
105。请勿在前端或日志中明文记录 code。查询接口
act=query · 根据 social_uid 查询已授权用户缓存信息
适用于用户已授权过、需要再次获取其资料但不想让用户重新授权的场景。
| 参数 | 必填 | 说明 |
|---|---|---|
act | 是 | 固定值 query |
appid | 是 | 应用 ID |
appkey | 是 | 应用密钥 |
type | 是 | 登录平台类型 |
social_uid | 是 | 用户唯一标识 |
返回字段与回调接口一致。用户不存在时返回 errcode 106。
支持平台
type 参数可选值
QQ
type=qq
微
微信
type=wx
支
支付宝
type=alipay
微
微博
type=sina
百
百度
type=baidu
抖
抖音
type=douyin
华
华为
type=huawei
G
Google
type=google
MS
微软
type=microsoft
企
企业微信
type=wework
钉
钉钉
type=dingtalk
飞
飞书
type=feishu
GT
Gitee
type=gitee
GH
GitHub
type=github
米
小米
type=xiaomi
B
哔哩哔哩
type=bilibili
错误码说明
所有失败响应均包含 code=-1 与 errcode
| code | errcode | 说明 | 解决方案 |
|---|---|---|---|
| 0 | - | 请求成功 | - |
| 2 | - | 等待用户授权中 | 继续轮询,或引导用户完成授权 |
| -1 | 101 | 参数缺失或无效 | 检查必填参数是否完整、格式是否正确 |
| -1 | 102 | 应用不存在或已禁用 | 检查 appid,确认应用状态正常 |
| -1 | 103 | appkey 不正确 | 核对应用详情中的 AppKey,注意不要与 AppID 混用 |
| -1 | 104 | 回调域名未授权 | redirect_uri 的域名需与应用「授权域名」相同或为其子域名 |
| -1 | 105 | 授权码无效或已过期 | code 一次性使用且有效期约 5 分钟,请重新发起授权 |
| -1 | 106 | 用户不存在 | 查询接口使用的 social_uid 不存在 |
| -1 | 201 | 调用次数已达上限 | 升级套餐或等待次日额度重置 |
| -1 | 202 | 账号授权数已达套餐上限 | 升级账号包,或在用户管理中清理不再需要的授权用户 |
| -1 | 205 | 登录方式未开启或未配置 | 在应用详情中开启对应登录方式,或在后台开放平台启用该平台 |
| -1 | 301 | 第三方平台接口错误 | 第三方返回异常,稍后重试或联系客服 |
SDK 示例
所有语言均基于同一套 HTTP 接口,无需额外依赖
JavaScript(Node.js / 浏览器)
const API = 'https://dl.6ei.cn/connect.php';
// 发起登录
const params = new URLSearchParams({
act: 'login', appid: APPID, appkey: APPKEY, type: 'github',
redirect_uri: 'https://yoursite.com/callback'
});
const res = await fetch(API + '?' + params).then(r => r.json());
if (res.code === 0) location.href = res.url;
// 回调兑换
const user = await fetch(API + '?' + new URLSearchParams({
act: 'callback', appid: APPID, appkey: APPKEY, code
})).then(r => r.json());
Python
import requests
API = 'https://dl.6ei.cn/connect.php'
r = requests.get(API, params={
'act': 'login', 'appid': APPID, 'appkey': APPKEY,
'type': 'wx', 'redirect_uri': 'https://yoursite.com/callback',
}).json()
if r['code'] == 0:
print('跳转:', r['url'])