接口概述
聚合登录API接入说明
接口地址:
https://login.fhjhy.cn/connect.php
请求方式:GET / POST
返回格式:JSON
接入流程
- 注册账号并创建应用,获取
appid和appkey - 调用登录接口获取授权URL,跳转用户授权
- 用户授权后回调到您的网站,携带
code参数 - 调用回调接口,使用
code换取用户信息
快速开始
5分钟完成接入
PHP 示例代码
登录接口
act=login
请求参数
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
act | 是 | string | 接口动作,固定值 login |
appid | 是 | string | 应用ID,在"我的应用"中获取,如:f99abb60a4f4439d |
appkey | 是 | string | 应用密钥,在"我的应用"中获取,请妥善保管不要泄露 |
type | 是 | string | 登录平台类型,可选值:qq、wx(微信开放平台-扫码登录)、alipay、sina、baidu、github、gitee、google、dingtalk、feishu 等 |
redirect_uri | 是 | string | 授权成功后的回调地址,必须与应用配置的授权域名匹配,需进行URL编码。示例:https://example.com/callback.php |
state | 否 | string | 自定义状态参数,用于防止CSRF攻击或传递业务数据,回调时会原样返回。建议传入随机字符串并在回调时验证 |
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
code | int | 状态码,0=成功,其他值表示失败 |
msg | string | 返回信息,成功时为 success,失败时为错误描述 |
type | string | 登录类型,与请求参数一致 |
url | string | 第三方授权页面地址,需要将用户重定向(302跳转)到此地址进行授权 |
请求示例
https://login.fhjhy.cn/connect.php?act=login&appid=您的APPID&appkey=您的APPKEY&type=qq&redirect_uri=https://您的网站/callback.php&state=随机字符串
成功返回示例
{
"code": 0,
"msg": "success",
"type": "qq",
"url": "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=xxx&redirect_uri=xxx&state=xxx"
}
失败返回示例
{
"code": -1,
"msg": "应用不存在或已禁用",
"errcode": 102
}
微信服务号OAuth代理
独立接口,支持PC扫码登录
说明:微信服务号OAuth代理是独立于聚合登录的接口,允许第三方系统直接使用本系统接口替代微信官方接口,实现微信服务号网页授权登录。支持PC端自动显示扫码页面。
功能特点
接口兼容微信官方
PC端自动扫码页面
安全身份验证
回调地址验证
接口地址
https://login.fhjhy.cn/wechat/oauth2/authorize
请求参数
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
appid | 是 | string | 本系统的应用 app_id(18位字母数字) |
secret | 是 | string | 本系统的应用 app_key(32位字母数字) |
redirect_uri | 否 | string | 授权后回调地址,不传则使用应用配置的 wechat_callback,传入时必须与配置一致 |
scope | 否 | string | 授权范围:snsapi_base(静默授权)或 snsapi_userinfo(需用户确认),默认 snsapi_userinfo |
state | 否 | string | 自定义参数,授权成功后会原样返回 |
请求示例
https://login.fhjhy.cn/wechat/oauth2/authorize?appid=您的APPID&secret=您的APPSECRET&redirect_uri=https://您的网站/callback&scope=snsapi_userinfo&state=自定义参数
授权流程
1
微信浏览器内访问:直接跳转到微信官方授权页面,用户确认后回调到 redirect_uri
2
非微信浏览器访问:自动显示二维码页面,用户使用微信扫码完成授权,PC端自动跳转到 redirect_uri
3
授权成功回调:跳转到 redirect_uri,携带
code 和 state 参数回调参数
| 参数名 | 类型 | 说明 |
|---|---|---|
code | string | 授权码,用于换取用户信息(有效期10分钟,只能使用一次) |
state | string | 原样返回的自定义参数 |
获取用户信息
接口:
POST https://login.fhjhy.cn/api/v1/oauth/userinfo
| 参数名 | 必填 | 说明 |
|---|---|---|
app_id | 是 | 应用ID |
app_secret | 是 | 应用密钥 |
code | 是 | 授权码(从回调中获取) |
用户信息返回示例
{
"success": true,
"code": 0,
"data": {
"open_id": "oXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"union_id": "oYYYYYYYYYYYYYYYYYYYYYYYYYYY",
"nickname": "用户昵称",
"avatar": "https://thirdwx.qlogo.cn/mmopen/xxx/132",
"gender": "male",
"location": "广东 深圳"
}
}
PHP 接入示例
前置配置要求
- 在开发者后台创建应用,启用"微信服务号"登录平台
- 配置应用的
wechat_callback回调地址 - 确保回调地址使用 HTTPS 协议
常见错误
| 错误信息 | 解决方案 |
|---|---|
| appid 参数不能为空 | 检查请求参数是否正确传入 appid |
| secret 参数不能为空 | 检查请求参数是否正确传入 secret |
| 应用不存在 | 确认 appid 是否正确 |
| secret 验证失败 | 确认 secret 是否正确 |
| 该应用未启用微信服务号登录 | 在应用设置中启用微信服务号平台 |
| 未配置微信服务号回调地址 | 在应用设置中配置 wechat_callback |
| redirect_uri 与应用配置的回调地址不一致 | 确保传入的 redirect_uri 与配置完全一致 |
| 授权已过期 | 授权超时(10分钟),请重新发起授权 |
注意事项:
secret是敏感信息,请勿在前端代码中暴露- 授权码(code)有效期为10分钟,只能使用一次
- PC端扫码二维码有效期为5分钟
snsapi_base静默授权只能获取 open_id,snsapi_userinfo可获取完整用户信息
回调接口
act=callback
说明:用户在第三方平台授权成功后,会携带
code 参数跳转到您设置的回调地址。您需要在回调页面调用此接口,用 code 换取用户信息。
请求参数
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
act | 是 | string | 接口动作,固定值 callback |
appid | 是 | string | 应用ID,与登录接口使用的一致 |
appkey | 是 | string | 应用密钥,与登录接口使用的一致 |
code | 是 | string | 授权码,从回调URL的 code 参数获取。注意:每个code只能使用一次,有效期约5分钟 |
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
code | int | 状态码:0=成功,2=等待用户授权中(轮询场景),其他=失败 |
msg | string | 返回信息 |
type | string | 登录平台类型,如 qq、wx 等 |
social_uid | string | 用户在该平台的唯一标识,可用于关联本地用户账号。同一用户在同一平台的 social_uid 始终相同 |
access_token | string | 访问令牌,部分平台可用于调用其他API |
nickname | string | 用户昵称/用户名 |
faceimg | string | 用户头像URL地址 |
gender | int | 用户性别:0=未知,1=男,2=女 |
location | string | 用户所在地区,如"广东 深圳"(部分平台可能为空) |
ip | string | 用户授权时的IP地址 |
请求示例
https://login.fhjhy.cn/connect.php?act=callback&appid=您的APPID&appkey=您的APPKEY&code=从回调获取的code
成功返回示例
{
"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.xxx.xxx"
}
重要提示:
social_uid是用户的唯一标识,建议存储到数据库用于用户关联- 每个
code只能使用一次,重复使用会返回错误 - 用户头像URL可能会过期,建议下载保存到自己的服务器
查询接口
act=query
说明:根据
social_uid 查询已授权用户的缓存信息。适用于需要再次获取用户信息但不想让用户重新授权的场景。
请求参数
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
act | 是 | string | 接口动作,固定值 query |
appid | 是 | string | 应用ID |
appkey | 是 | string | 应用密钥 |
type | 是 | string | 登录平台类型,如 qq、wx 等 |
social_uid | 是 | string | 用户唯一标识,从回调接口获取 |
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
code | int | 状态码,0=成功 |
msg | string | 返回信息 |
type | string | 登录平台类型 |
social_uid | string | 用户唯一标识 |
access_token | string | 访问令牌(可能已过期) |
nickname | string | 用户昵称 |
faceimg | string | 用户头像URL |
gender | int | 用户性别:0=未知,1=男,2=女 |
location | string | 用户所在地区 |
ip | string | 用户最后授权时的IP地址 |
请求示例
https://login.fhjhy.cn/connect.php?act=query&appid=您的APPID&appkey=您的APPKEY&type=qq&social_uid=用户的social_uid
成功返回示例
{
"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.xxx.xxx"
}
支持平台
type 参数可选值
QQ登录
type=qq微信-开放平台
type=wx微信-服务号
type=wechat支付宝
type=alipay微博登录
type=sina百度登录
type=baidu抖音登录
type=douyin华为登录
type=huawei谷歌登录
type=google微软登录
type=microsoft企业微信
type=wework钉钉登录
type=dingtalk飞书登录
type=feishuGitee
type=giteeGitHub
type=github小米登录
type=xiaomi哔哩哔哩
type=bilibili错误码说明
接口返回的错误码含义
| code | errcode | 说明 | 解决方案 |
|---|---|---|---|
0 | - | 请求成功 | - |
2 | - | 等待用户授权中 | 继续轮询等待,或提示用户完成授权 |
-1 | 101 | 参数缺失或无效 | 检查必填参数是否完整,参数值是否正确 |
-1 | 102 | 应用不存在或已禁用 | 检查 appid 是否正确,应用是否已被禁用 |
-1 | 103 | appkey错误或回调域名未授权 | 检查 appkey 是否正确,回调地址域名是否与应用配置的授权域名匹配 |
-1 | 104 | 登录方式未开启或未配置 | 检查该登录平台是否已在应用中启用,平台是否已配置 |
-1 | 105 | 授权码无效或已过期 | code 只能使用一次且有效期约5分钟,请重新发起授权 |
-1 | 106 | 用户不存在 | 查询接口使用的 social_uid 不存在 |
-1 | 201 | 调用次数已达上限 | 当日调用次数已用完,请升级套餐或等待次日重置 |
-1 | 301 | 第三方平台接口错误 | 第三方平台返回错误,请稍后重试或联系客服 |