聚合登录,就是利用用户在第三方平台上已有的账号来快速完成自己应用的登录流程。这里的第三方平台,是指QQ、微信、微博、百度等平台。通过本站的聚合登录接口,你的网站可以登录获取相应的用户信息和授权信息,例如uid、token、用户昵称、头像等。本站的聚合登录完全符合OAuth2.0身份鉴权机制。
传输方式:HTTP
数据格式:JSON
字符编码:UTF-8
https://login.idcbdy.cn/connect.php?act=login&appid={你的appid}&appkey={你的appkey}&type={登录方式}&redirect_uri={返回地址}| 对应值 | 登录方式名称 |
|---|---|
| puddingchat | PuddingChat |
| QQ | |
| wx | 微信 |
| sina | 微博 |
| 谷歌 | |
| microsoft | 微软 |
| 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 | 登录方式 | |
| url | string | 登录跳转地址 | https://graph.qq.com/oauth2.0/XXXXXXXXXX |
| qrcode | string | 登录扫码地址 | 此地址仅微信和支付宝返回 |
http://www.qq.com/my.php?type=qq&code=520DD95263C1CFEA0870FBB66E******
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 | 登录方式 | |
| 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 |
https://login.idcbdy.cn/connect.php?act=query&appid={appid}&appkey={appkey}&type={登录方式}&social_uid={social_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 | 登录方式 | |
| 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 |
布丁云 SDK 开放平台提供标准 OAuth 2.0 授权登录,第三方应用可通过此接口获取布丁云用户的账号信息,实现快捷登录。
生产环境基址:https://sdk.idcbdy.com(全部接口走 HTTPS,不支持 HTTP)
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哈希值 |
https://your-app.com/callback?code=AUTHORIZATION_CODE&state=xyz123randomPOST 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"
}
GET https://sdk.idcbdy.com/v1/oauth2/userinfoAuthorization: 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版本:1.0