
# 变更记录
| 产品版本 | 更新内容 | 更新日期 |
| --- | --- | --- |
| V6.0.4 | 支持了第三方轻应用使用云之家、企微、钉钉和飞书的App的原生功能,满足了用户希望在第三方轻应用使用扫码、定位、语音识别等功能 | 2023-12-29 |
# 用户场景
二开做的轻应用会发布到企业微信/钉钉/welink/飞书上作为第三方应用,客户可以直接在从第三方应用里选择进行安装使用,需要支持这些轻应用使用app的能力
# 功能介绍
第三方办公APP系统:支持APP的轻应用获取授权码;支持对授权码进行校验,判断其有效性。
应用系统:能将用户的授权码传输到第三方办公APP系统进行认证,实现对授权码进行识别和获取用户信息,返回认证结果。
第三方办公APP轻应用免登插件:编写插件实现上述应用系统对接第三方办公APP系统的功能,开发文档参考下面**第三方办公APP轻应用免登集成步骤**的开发说明。
# 使用说明
## 1.第三方办公APP轻应用免登插件开发说明
继承kd.bos.login.thirdauth.app.ThirdAppAuthtication,重写isNeedHandle和appAuthtication方法。
### 1.1重写isNeedHandle方法
功能说明:是否需要执行本插件的appAuthtication方法,如果是返回true,否则返回false。
示例:
```
/**
* 检查请求url是否需要本插件认证,如果是返回true,否返回false
*/
@Override
public boolean isNeedHandle(HttpServletRequest request,Account currentCenter) {
boolean isNeed = false;//是否需要通过第三方办公APP插件认证
//示例代码 仅供参考
String code = request.getParameter("code");//第三方用户身份标识 参数名根据实际情况而定
String thirdAppType = request.getParameter("thirdAppType");//请求 url携带的判断第三方办公APP认证插件类型 示例:金蝶云使用jindieyun 可自行定义传参用于判断
if(StringUtils.isNotEmpty(code)&& thirdAppType.equals("jindieyun")){
isNeed=true;
}
return isNeed;
}
```
| **返回参数** | **字段类型** | **字段说明** |
| --- | --- | --- |
| isNeed | Boolean | 当前所请求的url是否需要通过本插件认证的,如果是返回true,否返回false。 |
### 1.2 重写appAuthtication方法
功能说明:实现苍穹调用第三方办公APP系统的相关接口完成认证,返回认证结果。
示例:
```java
/**
*实现苍穹调用第三方办公APP系统的相关接口完成认证,返回认证结果。
*/
@Override
public AppAuthResult appAuthtication(HttpServletRequest request,Account currentCenter) {
// TODO Auto-generated method stub
AppAuthResult result = new AppAuthResult();
result.setSucceed(false);
String code = request.getParameter("code");//第三方用户身份标识 参数名根据实际情况而定
//现场需自行实现下面逻辑,将用户的授权码传输到第三方办公APP认证系统进行解析,从而实现对授权码进行识别和获取用户信息,request包含请求的授权码
Map<String, Object> authUserInfo = DemoUtils.getAuthUserInfo(code);// 此逻辑需现场实现通过调用第三方办公APP接口获取用户身份信息 请勿复制使用
if (authUserInfo != null) {
result.setSucceed(true);
result.setUserFlag(authUserInfo.getMobile());// 用户标识,包括手机号、邮箱、用户名
result.setUserType(UserType.MOBILE_PHONE); // 用户类型 枚举类UserType 对应用户标识
}
return result;
}
```
返回结果:AppAuthResult
| **属性** | **属性说明** |
| --- | --- |
| succeed | 认证是否成功,如果是返回true,否返回false。 |
| userType | 返回用户的类型,支持手机、用户名、邮箱、工号,使用枚举类UserType。 |
| userFlag | 返回用户信息具体的值,如手机号、邮箱、用户名、工号。 |
注意:userType返回的用户类型是手机,userFlag返回的用户信息对应的也需要是手机,其余返回类型也要匹配对应。
## 2. 第三方办公APP轻应用免登集成步骤
### 2.1 提供插件全限定类名
类名示例:kd.bos.xxx.xxx.DemoAuthtication
### 2.2 在MC配置第三方办公APP免登插件
**2.2.1 登录MC系统**
![image.webp](/download/0100cff8c7366a1a4d2f8d