开发文档

聚合登录介绍

聚合登录,就是利用用户在第三方平台上已有的账号来快速完成自己应用的登录流程。这里的第三方平台,是指QQ、微信、微博、百度等平台。通过本站的聚合登录接口,你的网站可以登录获取相应的用户信息和授权信息,例如uid、token、用户昵称、头像等。本站的聚合登录完全符合OAuth2.0身份鉴权机制。

接口协议规则

传输方式:HTTP

数据格式:JSON

字符编码:UTF-8

聚合登录流程
Step1:获取跳转登录地址
请求URL:
https://login.idcbdy.cn/connect.php?act=login&appid={你的appid}&appkey={你的appkey}&type={登录方式}&redirect_uri={返回地址}
其中登录方式对应值:
对应值 登录方式名称
puddingchat PuddingChat
qq QQ
wx 微信
sina 微博
google 谷歌
microsoft 微软
facebook Facebook
twitter Twitter
gitee Gitee
github GitHub
返回格式:
{
  "code": 0,
  "msg": "succ",
  "type": "qq",
  "url": "https://graph.qq.com/oauth2.0/XXXXXXXXXX"
}
返回参数说明:
参数名 参数类型 参数说明 参数示例
code int 返回状态码 0为成功,其它值为失败
msg string 返回信息 返回错误时的说明
type string 登录方式 qq
url string 登录跳转地址 https://graph.qq.com/oauth2.0/XXXXXXXXXX
qrcode string 登录扫码地址 此地址仅微信和支付宝返回

Step2:跳转到登录地址
登录地址为上一步返回的url的值。

Step3:登录成功会自动跳转到指定的redirect_uri,并跟上Authorization Code
例如回调地址是:www.qq.com/my.php,则会跳转到:
http://www.qq.com/my.php?type=qq&code=520DD95263C1CFEA0870FBB66E******

Step4:通过Authorization Code获取用户信息
请求URL: https://login.idcbdy.cn/connect.php?act=callback&appid={appid}&appkey={appkey}&type={登录方式}&code={code}
返回格式:
{
  "code": 0,
  "msg": "succ",
  "type": "qq",
  "access_token": "89DC9691E274D6B596FFCB8D43368234",
  "social_uid": "AD3F5033279C8187CBCBB29235D5F827",
  "faceimg": "https://thirdqq.qlogo.cn/g?b=oidb&k=3WrWp3peBxlW4MFxDgDJEQ&s=100&t=1596856919",
  "nickname": "大白",
  "location": "XXXXX市",
  "gender": "男",
  "ip": "1.12.3.40"
}
返回参数说明:
参数名 参数类型 参数说明 参数示例
code int 返回状态码 0为成功,2为未完成登录,其它值为失败
msg string 返回信息 返回错误时的说明
type string 登录方式 qq
social_uid string 第三方登录UID AD3F5033279C8187CBCBB29235D5F827
access_token string 第三方登录token 89DC9691E274D6B596FFCB8D43368234
faceimg string 用户头像 https://thirdqq.qlogo.cn/g?......
nickname string 用户昵称 消失的彩虹海
gender string 用户性别 男
location string 用户所在地 XXXXX市(仅限支付宝/微信返回)
ip string 用户登录IP 1.12.3.40
获取用户信息接口
在用户登录后的任意时间,可以请求以下接口再次查询用户的详细信息。

请求URL: https://login.idcbdy.cn/connect.php?act=query&appid={appid}&appkey={appkey}&type={登录方式}&social_uid={social_uid}
social_uid就是用户的第三方登录UID,用于识别用户的唯一字段。

返回格式:
{
  "code": 0,
  "msg": "succ",
  "type": "qq",
  "social_uid": "AD3F5033279C8187CBCBB29235D5F827",
  "access_token": "89DC9691E274D6B596FFCB8D43368234",
  "nickname": "大白",
  "faceimg": "https://thirdqq.qlogo.cn/g?b=oidb&k=ianyRGEnPZlMV2aQvvzg2uA&s=100&t=1599703185",
  "location": "XXXXX市",
  "gender": "男",
  "ip": "1.12.3.40"
}
返回参数说明:
参数名 参数类型 参数说明 参数示例
code int 返回状态码 0为成功,其它值为失败
msg string 返回信息 返回错误时的说明
type string 登录方式 qq
social_uid string 第三方登录UID AD3F5033279C8187CBCBB29235D5F827
access_token string 第三方登录token 89DC9691E274D6B596FFCB8D43368234
faceimg string 用户头像 https://thirdqq.qlogo.cn/g?......
nickname string 用户昵称 消失的彩虹海
gender string 用户性别 男
location string 用户所在地 XXXXX市(仅限支付宝/微信返回)
ip string 用户登录IP 1.12.3.40
布丁云账号登录(OAuth 2.0 授权码模式)

布丁云 SDK 开放平台提供标准 OAuth 2.0 授权登录,第三方应用可通过此接口获取布丁云用户的账号信息,实现快捷登录。

生产环境基址:https://sdk.idcbdy.com(全部接口走 HTTPS,不支持 HTTP)


Step1:引导用户跳转到授权页
将用户浏览器重定向到以下地址:
https://sdk.idcbdy.com/v1/oauth2/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code&state={state}&scope=userinfo
请求参数说明:
参数名 参数类型 参数说明 参数示例
client_id string 应用 ID,开发者中心创建后生成,可公开 1001
redirect_uri string 授权后回调地址,必须与白名单完全一致 https://your-app.com/callback
response_type string 固定值 code,不支持 token 简化模式 code
state string 随机串,回调时原样带回,用于防 CSRF,务必校验 xyz123random
scope string 权限范围,空格分隔,默认 userinfo userinfo
code_challenge string 可选,PKCE 校验值,传了则换 token 时必须带 code_verifier S256哈希值

Step2:用户登录并确认授权
用户在布丁云页面完成登录并点击「同意授权」。

Step3:授权成功后回调到你的 redirect_uri
用户确认授权后,浏览器自动跳转到你的回调地址,附带 code 和 state 参数:
https://your-app.com/callback?code=AUTHORIZATION_CODE&state=xyz123random
注意:code 有效期很短(通常 10 分钟),且只能使用一次,请及时在服务端处理。

Step4:服务端用 code 换取 access_token
请求地址:POST https://sdk.idcbdy.com/v1/oauth2/token
请求参数:
参数名 参数类型 参数说明 参数示例
grant_type string 固定值 authorization_code authorization_code
code string 上一步回调拿到的授权码 AUTHORIZATION_CODE
redirect_uri string 必须与 Step1 的 redirect_uri 完全一致 https://your-app.com/callback
client_id string 应用 ID 1001
client_secret string 应用密钥,仅服务端使用,禁止暴露到前端 xxxxxxxx
返回格式:
{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "refresh_token": "def50200...",
  "token_type": "Bearer",
  "expires_in": 7200,
  "scope": "userinfo"
}

Step5:用 access_token 获取用户信息
请求地址:GET https://sdk.idcbdy.com/v1/oauth2/userinfo
请求头:Authorization: Bearer {access_token}
返回格式:
{
  "uid": "10001",
  "nickname": "布丁用户",
  "avatar": "https://cdn.idcbdy.com/avatar/xxx.jpg",
  "short_no": "845099997"
}
返回参数说明:
参数名 参数类型 参数说明 参数示例
uid string 用户唯一标识,建议作为账号主键,禁止用昵称做主键 10001
nickname string 昵称,用户随时可改,不适合做唯一标识 布丁用户
avatar string 头像 URL https://cdn.idcbdy.com/avatar/xxx.jpg
short_no string 布丁号,用户友好编号 845099997

其他接口

刷新令牌:access_token 过期后,用 refresh_token 调用 POST /v1/oauth2/token(grant_type=refresh_token)静默续期,无需用户再次授权。

撤销令牌:用户解除绑定时,调用 POST /v1/oauth2/revoke 使令牌失效。

健康检查:GET /v1/oauth2/health 无需鉴权,可用于探活。

SDK下载

SDK版本:1.0

点击下载