# SDK集成方案

应用远程调用模式,即集成SDK,应用集成SDK实际是发送rest请求远程调用AFCenter。

注:应用集成SDK前提是该应用项目为EOS项目且版本为8.1.2版本(包含)以上。

  • 开发依赖包
    <dependency>
		<groupId>com.primeton.gocom</groupId>
		<artifactId>com.primeton.gocom.afcenter.sdk</artifactId>
		<version>8.2.1</version>
	</dependency>
  • 配置详情

    网关集成AFCenter的SDK共有两种模式:

    1.直接在项目配置文件中使用ip加端口模式完成AFCenter的SDK接口调用,如下所示:

afc.application.name=127.0.0.1:8081
afc.application.tenant=sys_tenant
afc.application.appCode=AFCenter
afc.application.appSecret=b771a0ad37c34baeab2b6f73fbebcabd

tenant为系统默认租户,appCode为系统初始化应用编码,appSecret为改应用密匙,都可使用admin账号登录AFCenter平台后获取。

  1. 在项目配置文件中使用nacos服务名模式完成AFCenter的SDK接口调用,如下所示:
afc.application.name=AFCENTER
afc.application.tenant=sys_tenant
afc.application.appCode=AFCenter
afc.application.appSecret=b771a0ad37c34baeab2b6f73fbebcabd

afc.application.name的值为AFCenter服务启动后在nacos中注册的服务名。

注:使用nacos服务名模式集成AFCenter的SDK需要与AFCenter配置同一nacos地址。

  • 接口说明

    com.primeton.gocom.afcenter.sdk.api包中接口即可。

  • 使用方式

直接使用@Autowired 方式注入IAFCClient,再get相应API类后再调用对应的API方法。

也可以使用AFCClientFactory去获取IAFCClient

IAFCClient afcClient=AFCClientFactory.getInstance().createAFCClient();
@RestController
public class TestController {

 	@Autowired
	private IAFCClient afcClient;

	@GetMapping(value = "/api/user")
	public User getAfcApiUser() {
		IUserAPI userApi = afcClient.getUserAPI();
		User user = userApi.findUserByCode("sysadmin");
		return user;
	}

}

# 常见问题

应用集成AFCenter的SDK的过程中容易出现的问题:

1.AFCenter的SDK版本依赖问题:

目前版本已更新为8.2.1-SNAPSHOT,后续版本变更文档中会及时更新。

2.应用项目集成SDK后,调用SDK接口出现401状态码,AFCenter日志打印提示访问该接口前未登录问题:

首先确保AFCenter平台用户账号已登录,通过postman调用应用的接口(headers中传入Authorization,Authorization值是在afc登陆接口返回值中获取的)。

其次遇到session共享的问题,请排查以下几点:

a. 应用与AFCenter是否属于同系统。

b. redis是否使用同一个。

c. user-config.xml中是否开启系统内共享开关。

 <group name="CacheForUserObject">
            <configValue key="IsSystemCache">true</configValue>
            <configValue key="CacheMode">REPL_ASYNC</configValue>
            <configValue key="IsSystemShare">true</configValue>
        </group>

d. 是否加入登录接口过滤白名单

注:afcenter的user-config.xml文件中登录过滤白名单要加入/api/afc/afc-proxy/*;


<group name="Login-Filter">
            <!-- pages that can be accessed by any one including those not login -->
            <configValue
                    key="Exclude">/api/afc/afc-proxy/*,/api/afc/oauth2/*,/api/afc/login/third-party/auth,/api/afc/login/third-party/qrConnect,/afc-proxy/*,/api/afc/validation-code,/swagger-ui.html,/v2/api-docs,/webjars/*,/swagger-resources/*,/afc,/afc/,/api/afc/login,/api/afc/login/password/key,/actuator/*,/om/*,/common.remote,
                /jmxDefault.jmx,/common.download</configValue>
            <!-- <configValue key="Include">*.flow,*.flowx,*.jsp,*.html,*.ajax,*.ext,*.action,*.beanx</configValue> -->
            <configValue key="Include">/*</configValue>
            <!-- the page to display when user not login -->
            <configValue key="LoginPage"></configValue>
        </group>

上次更新: 2023/3/22下午3:43:47