如果您需要和 Moka 开放平台对接获取隐私数据(如申请、职位信息等),为保证数据的安全与隐私,您需要取得授权才可访问,即获取访问用户数据的授权令牌 accessToken。该流程采用国际通用的 OAuth2.0 标准协议作为用户身份验证与授权协议。 OAuth2.0协议规范
前期准备
您需要使用 Moka 为你的机构生成的私密 clientId 和 clientSecret,通过clientId 和 clientSecret 获取accessToken。 通过accessToken访问 Moka API 的请求。如有需要,请向与您企业对接的客户成功经理索取 clientId 和 clientSecret。
获取访问凭证accessToken
调用接口令牌 accessToken 有效期为 2 小时。
1、当有效期大于等于 30 分钟时,调用获取 accessToken 接口返回老的 accessToken。
2、当有效期小于 30 分钟时,调用获取 accessToken 接口返回新的 accessToken。此时新老两个 accessToken 都有效。
HTTP 请求
POST https://api.mokahr.com/api-platform/v1/auth/oauth2/getToken
Body参数
字段 | 类型 | 是否必填 | 描述 |
---|---|---|---|
clientID | String | 是 | 应用唯一标识,联系与您企业对接的客户成功经理获取 |
clientSecret | String | 是 | 应用秘钥,联系与您企业对接的客户成功经理获取 |
grantType | String | 是 | 授权类型 ,值为client_credentials |
返回参数
字段 | 类型 | 描述 |
---|---|---|
code | integer |
|
msg | String | 错误信息 |
data | Object | |
data.accessToken | String | 接口访问凭证 |
data.tokenType | String | accessToken的类型目前只支持Bearer |
data.expiresIn | Number | accessToken过期时间,单位:秒 |
错误码
code | errorMessage | 错误描述 |
---|---|---|
110020 | unauthorized_client | clientID或者clienSecret无效,请联系与您企业对接的客户成功经理获取有效的clientID或者clienSecret |
调用业务接口
调用业务接口时,需要在Header中增加Authorization参数,值为Bearer <accessToken>
。 以调用新增组织架构接口为例,请求示例如下:
请求样例
curl --location --request POST 'https://api.mokahr.com/api-platform/v1/auth/oauth2/getToken' \
--header 'Content-Type: application/json' \
--data-raw ' { "clientID": "moka_Z1Y99DlokiOGXmw8", "clientSecret": "ell2Wl2dwUQ7no75BAsLrwtUaPw8W0tAEoYXv13ibRoV", "grantType": "client_credentials" }'
2
3
响应样例
{ "code": 0, "msg": "成功", "data": { "accessToken": "a-685ca366-45e8-4025-9825-9840280ecd39", "expiresIn": 6824, "tokenType": "Bearer" } }
错误响应样例
{ "code": 110020, "msg": "unauthorized_client", "data": {} }
请求样例
curl --location --request PUT 'https://api.mokahr.com/api-platform/v2/departments' \
--header 'Authorization: Bearer <accessToken>' \
--header 'Content-Type: application/json' \
--data '{ "departments": [ { "departmentCode": "ididid1", "name": "namenamename1", "parentCode": "ididid1", "sequence": 0 }, { "departmentCode": "ididid2", "name": "namenamename2", "parentCode": "ididid2" }, { "departmentCode": "ididid2", "name": "namenamename2", "parentCode": "ididid2", "type": 2 }, { "departmentCode": "ididid3", "name": "namenamename3", "parentCode": "0"} ] }'
2
3
4