============================== mge-oauth2-授权服务接入指南 ============================== 为了方便第三方应用接入 MGEDATA 数据存储平台,我们开发小组在 MGE 平台集成了 OAuth2 授权服务。 相关授权、认证流程完全遵循 OAuth2.0 标准,这里不再赘述原理与运行流程, 不了解的可以看 RFC 6749 对 OAuth2.0 标准的定义,或者看中文版的介绍:阮一峰 - 理解OAuth 2.0。 应用申请 -------- 进入 https://www.mgedata.cn/oauth2/applications ,点击“点击此处”添加应用。 已经添加过的直接点击 “new application” 按钮。 .. image:: https://s1.ax1x.com/2018/07/22/PGypuD.png 填写应用名称,client type 选择 confidential,授权类型按需选择。 ridirect uris 填写回调的 uri 地址(仅这些注册过的地址有效)。 .. image:: https://s1.ax1x.com/2018/07/22/PGy9De.png 点击保存应用即可。 相关接口简单说明 ---------------- **授权相关** +----------------+--------------------------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | / | url | 方法 | 参数 | 说明 | +================+================================+======+===============================================================================================================================================================================================================================+=============================================================================================================================================================================+ | **base url** | https://www.mgedata.cn/oauth2/ | | | 后面的 url 都应该接在他后面 | +----------------+--------------------------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | **申请认证** | /authorize/ | GET | **response\_type:** 授权类型
**client\_id**: 客户端 ID
**redirect\_uri**: 重定向 uri
**scope**: 申请的权限范围,目前有 read, write 两种,默认值也为这两种
**state**: 客户端状态 | 申请认证,用户登录授权成功之后会跳转到重定向uri,
携带 access\_token 和 state(如果有,建议设置,为了安全) 参数。
code 有效期只有 60s。 成功之后再去请求token。 | +----------------+--------------------------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | **请求 token** | /token/ | POST | **grant\_type**: 授权类型,跟申请 client\_id 时候选择的一致
**client\_id**: 客户端 ID
**client\_secret**: 客户端密钥
**code**: 上一步中得到的授权码
**redirect\_uri**: 重定向 uri,跟上一步中应该一致 | 请求 token。 | +----------------+--------------------------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | **刷新 token** | /token/ | POST | **grant\_type**: refresh_token
**token**: 前面获取到的 token | 刷新 token。 | +----------------+--------------------------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | **撤销 token** | /revoke\_token/ | POST | **token**: 前面获取到的 token
**client\_id**: 客户端 ID
**client\_secret**: 客户端密钥(在confidential模式需要) | 撤销 token。 | +----------------+--------------------------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 获取用户信息 -------------- **描述**:提供模板 id ,填写该模板对应的数据,并上传。 **方法与接口**: ``` https://www.mgedata.cn/api/v1/account/o/user/info ``` **权限**:已登录用户 **参数**: - HEADER 部分 +---------------+--------+---------------------------------------------------------------------------------------------------------------------------------------------------+ | 字段 | 类型 | 描述 | +===============+========+===================================================================================================================================================+ | Authorization | String | 认证信息,在通过 oauth 获取了 access\_token 之后,将 access\_token 置于此字段,
Bearer 类型,例如:**Bearer Af8TR1HAmgog19BdmR99vrzEuDEG9a** | +---------------+--------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - 返回值 +------------------+---------+-----------------------------------------------------------------------------------------------+ | 字段 | 类型 | 描述 | +==================+=========+===============================================================================================+ | code | umber | 错误码,0为成功 | +------------------+---------+-----------------------------------------------------------------------------------------------+ | data | Object | 具体用户信息 | +------------------+---------+-----------------------------------------------------------------------------------------------+ | data.username | String | 用户名,**唯一** | +------------------+---------+-----------------------------------------------------------------------------------------------+ | data.nickname | String | 昵称 | +------------------+---------+-----------------------------------------------------------------------------------------------+ | data.email | String | 邮箱,**唯一** | +------------------+---------+-----------------------------------------------------------------------------------------------+ | data.sex | String | 性别,有 M, F, U 三个枚举值,分别表示 男、女、为设置 | +------------------+---------+-----------------------------------------------------------------------------------------------+ | data.avatar | String | 头像地址,文件后缀部分除了 lg 之外还可以是 nm 或 sm,大小分别为 200\*200,100\*100,30\*30 | +------------------+---------+-----------------------------------------------------------------------------------------------+ | data.tel | String | 手机号 | +------------------+---------+-----------------------------------------------------------------------------------------------+ | data.institution | String | 所属机构 | +------------------+---------+-----------------------------------------------------------------------------------------------+ | data.is\_active | Boolean | 是否有效(有些垃圾用户可能会系统置为无效或非法用户可能被拉黑,为 false 时不应存储该用户信息) | +------------------+---------+-----------------------------------------------------------------------------------------------+ *注:data 字段即为返回的用户信息所有字段,其中 username 和 email 两个字段均为唯一标识,第三方可用任意一个标识用户。* - 示例返回值 :: { "code": 0, "data": { "username": "test", "nickname": "test", "email": "test@mge.cn", "sex": "U", "avatar": "https://www.mgedata.cn/media/avatars/default_lg.jpg", "tel": "", "institution": "", "is_active": true } }