Developer Docs

开发文档

OAuth 聚合登录接口接入指南 · 快速上手

概述

次元聚合登录 是一款社会化账号聚合登录系统,基于 OAuth2.0 协议,为网站提供统一、便捷的第三方登录服务。开发者只需简单的几步操作,即可在自己的网站上集成 QQ、微信、支付宝、微博、GitHub 等多种第三方登录方式。

核心优势:

  • 统一接口 — 一套 API 对接多个平台,无需重复开发
  • 简化开发 — 无需单独对接每个平台的复杂授权流程
  • 协议标准 — 基于 OAuth2.0 标准协议,安全可靠
  • 语言无关 — 纯 HTTP 接口,支持任何能发送 HTTP 请求的编程语言

前提条件:

  • 已注册 次元聚合登录 账号并登录用户中心
  • 已创建应用并获取 AppID 和 AppKey
  • 已在应用设置中配置回调授权域名
支持平台

目前支持以下第三方登录平台,各平台对应的 type 参数值:

type 值平台名称type 值平台名称
qqQQfeishu飞书
wx微信dingtalk钉钉
wxgzh公众号giteeGitee
alipay支付宝githubGitHub
sina微博oschina开源中国
baidu百度aliyun阿里云
douyin抖音nanakoNanako
huawei华为kuaishou快手
xiaomi小米gitcodeGitCode
google谷歌giteaGitea

各平台是否可用取决于管理员是否在后台开启并配置了对应的密钥。微信(wx)和支付宝(alipay)额外支持扫码登录模式。

快速开始

只需 4 步即可完成第三方登录接入:

1. 注册并创建应用 — 访问用户中心注册账号,进入应用管理创建您的应用,获取 AppID 和 AppKey。

2. 配置回调地址 — 在应用设置中填写您网站的回调地址,并添加授权域名。

3. 发起登录请求 — 在您的网站登录页面,通过 API 获取登录跳转地址。

4. 处理回调并获取用户信息 — 用户授权后,通过回调接口直接获取用户信息。

PHP - 发起登录
<?php
$appid = '您的AppID';
$appkey = '您的AppKey';
$callback = 'https://yourdomain.com/callback.php';
$loginUrl = "https://www.uzm.cc/connect.php?act=login&appid={$appid}&appkey={$appkey}&type=qq&redirect_uri=" . urlencode($callback);
$result = json_decode(file_get_contents($loginUrl), true);
if ($result['code'] == 0) {
 header('Location: ' . $result['url']); exit;
} else { echo '登录发起失败:' . $result['msg']; }
?>
PHP - 回调处理
<?php
$appid = '您的AppID'; $appkey = '您的AppKey';
if (isset($_GET['type']) && isset($_GET['code'])) {
 $type = $_GET['type']; $code = $_GET['code'];
 $apiUrl = "https://www.uzm.cc/connect.php?act=callback&appid={$appid}&appkey={$appkey}&type={$type}&code={$code}";
 $data = json_decode(file_get_contents($apiUrl), true);
 if ($data['code'] == 2) { echo '登录尚未完成,请稍后...'; }
 elseif ($data['code'] == 0) {
  echo '用户昵称:' . $data['nickname'];
  echo '唯一标识:' . $data['social_uid'];
 } else { echo '登录失败:' . $data['msg']; }
}
?>
回调地址

回调地址(Redirect URI)是用户完成第三方平台授权后,系统将用户重定向回您网站的地址。

注意事项:

  • 回调地址必须以 http://https:// 开头
  • 回调域名必须在应用设置中提前配置授权域名
  • 建议使用 HTTPS 协议确保数据传输安全
  • 授权码(code)有效期较短,收到回调后请尽快处理

回调参数:

参数类型必返回说明
typeString登录类型,如 qq、wx、alipay 等
codeString授权码,用于获取用户信息
stateString自定义状态参数,原样返回

回调示例:https://yourdomain.com/callback.php?type=qq&code=520DD95263C1CFEA0870&state=xxx

接口:发起登录

通过此接口获取第三方平台的登录跳转地址。

请求地址: GET https://www.uzm.cc/connect.php?act=login

参数类型必填说明
actString固定值:login
appidString应用的 AppID
appkeyString应用的 AppKey(请勿在前端暴露)
typeString登录类型:qq、wx、alipay 等
redirect_uriString授权回调地址,需 URL 编码
stateString自定义状态参数,防止 CSRF

成功返回:

{
  "code": 0,
  "msg": "succ",
  "type": "qq",
  "url": "https://graph.qq.com/oauth2.0/authorize?..."
}

微信和支付宝登录时,还会额外返回 qrcode 字段用于扫码登录。

接口:登录回调

用户授权后,使用 code 直接换取用户信息,一步即可拿到完整用户数据。

请求地址: GET https://www.uzm.cc/connect.php?act=callback

参数类型必填说明
actString固定值:callback
appidString应用的 AppID
appkeyString应用的 AppKey
typeString登录方式
codeString回调时收到的授权码

成功返回:

{
  "code": 0,
  "msg": "succ",
  "type": "qq",
  "access_token": "89DC9691...",
  "social_uid": "AD3F5033...",
  "faceimg": "https://thirdqq.qlogo.cn/...",
  "nickname": "用户昵称",
  "location": "北京市",
  "gender": "男",
  "ip": "1.12.3.40"
}

返回 code: 2 表示用户尚未完成授权,建议间隔 2 秒后重试。

参数说明
social_uid第三方用户唯一标识(请以此字段绑定用户)
nickname用户昵称
faceimg用户头像 URL
gender用户性别
location用户所在地(部分平台返回)
ip用户登录 IP
接口:查询用户信息

登录后的任意时间,可使用此接口再次查询用户详细信息。

请求地址: GET https://www.uzm.cc/connect.php?act=query

参数类型必填说明
actString固定值:query
appidString应用的 AppID
appkeyString应用的 AppKey
typeString登录方式
social_uidString第三方用户唯一标识
错误码
codeerrcode说明解决方案
0-请求成功-
2-用户尚未完成登录间隔 2 秒后重新请求回调接口
-1101缺少必要参数检查必填参数是否传递
-1102应用不存在/已关闭/审核中检查 AppID,确认应用状态
-1103AppKey不正确/回调域名未授权检查 AppKey,添加回调授权域名
-1104登录方式未开启或未配置确认该登录方式已启用
-1201数据库错误联系管理员排查
-1301第三方平台返回错误查看 msg,检查第三方密钥配置
安全说明
  • AppKey 保密:绝不能在前端 HTML/JS 中暴露,所有涉及 AppKey 的请求必须在服务端发起。
  • 域名授权:开启域名白名单后,只有配置的域名才能使用登录功能。
  • HTTPS:强烈建议使用 HTTPS 协议确保数据传输安全。
  • state 参数:建议传递 state 参数,回调时验证一致性以防止 CSRF 攻击。
  • social_uid:使用 social_uid(而非 nickname)作为用户唯一标识,因为昵称可能变更。
最佳实践

1. 使用 cURL 替代 file_get_contents — 支持超时控制、SSL 验证等:

function httpGet($url, $timeout = 10) {
 $ch = curl_init();
 curl_setopt_array($ch, [
  CURLOPT_URL => $url,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_TIMEOUT => $timeout,
  CURLOPT_SSL_VERIFYPEER => true,
  CURLOPT_FOLLOWLOCATION => true,
 ]);
 $response = curl_exec($ch);
 curl_close($ch);
 return json_decode($response, true);
}

2. 轮询策略优化 — 收到 code=2 时使用递增间隔轮询:

$maxRetry = 15;
$intervals = [2,2,2,3,3,3,5,5,5,5,5,8,8,8,10];
for ($i = 0; $i < $maxRetry; $i++) {
 $data = httpGet($apiUrl);
 if ($data['code'] == 0) break;
 elseif ($data['code'] == 2) { sleep($intervals[$i]); continue; }
 else die('登录失败: ' . $data['msg']);
}

3. 用户绑定建议 — 使用 type + social_uid 组合键作为唯一标识。

SDK下载

PHP SDK 版本:1.0

点击下载 SDK