APP内应用免认证接口
准备工作
在对接之前,应用需做以下3点准备工作:
1、APP支持标准的OAuth授权码模式支持
流程简介:
- 获取code。
- code换token。
- token换用户信息。
2、提供应用id和应用秘钥给sso
- 将sso域名注册到APP应用中,并且提供应用id和应用秘钥。
免认证接口
一、获取code
Sid请求APP获取code的接口
请求⽅式: GET(HTTPS或HTTP)
请求地址: https://sso.xxx.edu.cn/oauth/authorize
注:https方式类似。
请求参数:
请求示例:
https://app.xxx.edu.cn/oauth/authorize?client_id=xxx&redirect_uri=xxx&response_type=code&scope=base_api&state=xxx
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
client_id | 是 | 应用唯一标识,即应用注册时获得的应用id |
redirect_uri | 是 | 授权后重定向的回调链接地址,注意需使用 urlEncode 对链接进行处理 |
response_type | 是 | 返回类型,请填写 code |
scope | 否 | 作用域,与注册时匹配。 base_api 可以访问基础API且支持静默模式不弹出授权提醒; all 可以使用所有高级API。通过开放平台创建的应用默认授予 base_api 作用域,可申请 all 权限; 在微哨管理平台创建的应用同时授予 base_api 和 all 权限 |
state | 是 | 重定向后会带上 state 参数。开发者可以用此参数验证请求有效性,或记录用户请求授权页前的位置。 同时此参数可用于防止跨站请求伪造(CSRF)攻击 |
返回结果: 因为应用嵌入在APP内部,此时APP应该是登录状态,在一系列校验后,会重定向到redirect_uri并且带着code和state
示例:
https://redirect_uri?code=xxxxx&state=xxx
参数说明:
参数 | 说明 |
---|---|
code | 下发的code |
state | 请求code时带的参数 |
二、通过 code 换取网页授权token
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://app.xxx.edu.cn/oauth/token
注:https方式类似。
请求参数:
注:请求数据类型为Form表单(application/x-www-form-urlencoded) 注:client_id和client_secret在header中传输
request.addHeader(“Authorization”, "BASIC "+ base64Encoder.encodeToString(String.format("%s:%s", apiKey, apiSecret).getBytes(Charset.forName("UTF-8"))));
Form表单示例:
grant_type=authorization_code&code=xxx&redirect_uri=xxx
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 固定值 authorization_code |
client_id | 否 | 应用唯一标识,即应用注册时获得的 应用id |
client_secret | 否 | 应用的秘钥,即应用注册时获得的应用秘钥 |
code | 是 | 授权码,即第一步应用回调地址获得的 code 参数值 |
redirect_uri | 是 | 应用回调地址 |
返回结果:
{
"access_token": "fDanz0ydkCqVsgSoze7mrCnwJIsN0dL",
"expires_in": "1209600",
"scope": "base_api",
"refresh_token": "HhbiRKzjVnKdvGfmuGjvh3Clm4AIMqV8",
"token_type": "Bearer"
}
参数说明:
参数 | 说明 |
---|---|
access_token | 下发的token |
expires_in | 有效期 |
scope | 作用域 |
refresh_token | 刷新令牌 |
token_type | 令牌类型 |
三、获取用户信息
获取用户信息。
请求⽅式: GET(HTTPS或HTTP)
请求地址: http://app.xxx.edu.cn/profile
注:https方式类似。 注:token在head中传输
header 'Authorization: Bearer access_token'
请求参数:
示例:
http://sso.xxx.edu.cn/profile
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 请求头解析 | 令牌 |
返回结果:
{
"name": "张三",
"student_number": "zhangsan"
}
参数说明:
参数 | 说明 |
---|---|
name | 姓名 |
student_number | 账号 |