接入文档

聚合登录 API 接入说明 · 接口地址 https://dl.6ei.cn/connect.php

接口概述

一次接入,即可使用全部平台的快捷登录能力。

接口地址https://dl.6ei.cn/connect.php
请求方式GET / POST
返回格式application/json(UTF-8)
字符编码UTF-8

接入流程

  1. 注册账号并创建应用,获取 appid 与 appkey
  2. 服务端调用登录接口获取授权 URL,跳转用户浏览器进行授权
  3. 用户授权完成后,第三方平台回调到本站,本站再携带 code 回跳你的回调地址
  4. 你的服务端使用 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 或透传业务数据,回调时原样返回

返回参数

参数类型说明
codeint0 成功,其他为失败
msgstring成功为 success,失败为错误描述
typestring登录类型,与请求一致
urlstring第三方授权页面地址,需 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 分钟

返回参数

参数类型说明
codeint0 成功;2 等待用户授权中(轮询场景);其他为失败
typestring登录平台类型
social_uidstring用户在该平台的唯一标识,同一用户始终相同,建议作为本地账号关联依据
access_tokenstring访问令牌,部分平台可用于调用其他 API
nicknamestring用户昵称
faceimgstring用户头像 URL,可能过期,建议转存
genderint0 未知,1 男,2 女
locationstring所在地区,如「广东 深圳」,部分平台为空
ipstring用户授权时的 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
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

codeerrcode说明解决方案
0-请求成功-
2-等待用户授权中继续轮询,或引导用户完成授权
-1101参数缺失或无效检查必填参数是否完整、格式是否正确
-1102应用不存在或已禁用检查 appid,确认应用状态正常
-1103appkey 不正确核对应用详情中的 AppKey,注意不要与 AppID 混用
-1104回调域名未授权redirect_uri 的域名需与应用「授权域名」相同或为其子域名
-1105授权码无效或已过期code 一次性使用且有效期约 5 分钟,请重新发起授权
-1106用户不存在查询接口使用的 social_uid 不存在
-1201调用次数已达上限升级套餐或等待次日额度重置
-1202账号授权数已达套餐上限升级账号包,或在用户管理中清理不再需要的授权用户
-1205登录方式未开启或未配置在应用详情中开启对应登录方式,或在后台开放平台启用该平台
-1301第三方平台接口错误第三方返回异常,稍后重试或联系客服

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'])