## 适用范围

 

第三方手机APP登录苍穹开发。

 

## 功能简介

  随着移动互联网的兴起，越来越多的人喜欢在手机APP中处理个人生活和工作相关的事宜 ，下一代苍穹作为企业信息处理中枢，需要和类似云之家之类的手机APP应用进行集成以方便用户业务处理。每一个类似云之家之类的手机APP应用在金蝶云中只需要实现kd.bos.login.thirdauth.app.ThirdAppAuthtication接口就可以实现和苍穹云的访问集成 。

 

## 接口方法说明



### 实现isNeedHandle方法


- 功能说明：方法的目的检查当前所使用的url是否是本APP应用自己需要处理的，如果是返回true，否返回false。

 

- 示例：

```java
    @Override
	public boolean isNeedHandle(HttpServletRequest request,Account currentCenter) {
		boolean isNeed = false;
		String ticket = request.getParameter("ticket");
		if(StringUtils.isNotEmpty(ticket)&&){
             isNeed=true;
        }
	    return isNeed;
	}


```

- 参数说明

传入参数：

| **传入参数**  | **字段类型** | **字段说明**                     |
| ------------- | ------------ | -------------------------------- |
| request       | Request      | 当前访问的HttpServletRequest对象 |
| currentCenter | Account      | 当前使用的账套对象               |

 

返回参数：

| **返回参数** | **字段类型** | **字段说明**                                                 |
| ------------ | ------------ | ------------------------------------------------------------ |
| isNeed       | Boolean      | 当前所使用的url是否是本APP应用自己需要处理的，如果是返回true，否返回false。 |

### 实现appAuthtication方法

- 功能说明：方法的目的是如果当前所使用的url是本应用需要处理的，则自己实现和第三方应用的认证处理逻辑并返回用户的标识及标识类型，方便下一代系统建立关联。

 

- 示例：

```java

    @Override
	public AppAuthResult appAuthtication(HttpServletRequest request,Account currentCenter) {
		// TODO Auto-generated method stub
		AppAuthResult result = new AppAuthResult();
		result.setSucceed(false);
		
		try {

			String ticket = request.getParameter("ticket");
			// 请求的URL路径
			String path = request.getServletPath();
			// 轻应用id确定，由于云之家url变更做如下处理
			

            AppContext appCtx = TicketService.getContextByTicket(currentCenter.getTenantId(), ticket);
			
			
			
				
			if (appCtx != null) {
				result.setSucceed(true);//
				result.setUserFlag(appCtx.getMobile());
				result.setUserType(UserType.MOBILE_PHONE);
			}
		} catch (KDException ex) {
			throw ex;			
		} catch (Exception e) {
			logger.error(e);
			String sMsg = String.format("App验证错误: ", ExceptionUtils.getExceptionStackTraceMessage(e));
			throw new KDException(LoginErrorCode.loginBizException, sMsg);

		}
		return result;
}

```

- 参数说明

传入参数：

| **传入参数**  | **字段类型** | **字段说明**                     |
| ------------- | ------------ | -------------------------------- |
| request       | Request      | 当前访问的HttpServletRequest对象 |
| currentCenter | Account      | 当前使用的账套对象               |

 

返回参数：

| **返回参数** | **字段类型**  | **字段说明**     |                                                              |
| ------------ | ------------- | ---------------- | ------------------------------------------------------------ |
| result       | AppAuthResult | 当前认证的结果 |                                                              |
|              | isSucceed     |                  | 认证是否成功，如果是返回true，否返回false。                  |
|              | userType      | UserType         | 返回用户的类型。目前支持手机，uid，yzhuid三种 ，以后可扩展。 |
|              | userFlag      | String           | 返回用户类型具体的值。                                       |

 

## 参数配置

### 在配置管理中心配置

在配置管理中心配置当前环境需要使用的第三方APP的类，如果多个APP同时存在，多个类之间用，隔开。

Key**：****/bos-dev/config/web/prop/authtication.apps**

内容示例：kd.bos.login.thirdauth.app.yzj.YZJAppAuthtication

   ![img](images/5e7d66d9a37259795a6e4fd7.png) 