一、简介
用户授权服务是在C端 APP 中提供用户登录后的授权信息管理的服务。包含对授权信息的缓存与更新,并提供基础的用户授权操作。由于用户的实际授权方式有多种(包含账号密码登录、手机短信验证码登录、第三方账号登录等),授权服务仅提供最常用的账号密码登录功能。其它的功能请通过C端 APP 的 API 完成登录操作。
授权服务的主要功能包含:授权信息的缓存与管理
二、服务功能
1、用户授权登录
通过授权服务进行登录时,服务默认会将授权登录成功后的授权信息缓存到服务中,后续需要授权信息时直接使用即可。
XFServerManager.getServerAgent<XFAuthServer>(XFAuthServer.SERVER_ID)
.getServer()
.map2AsyncX { it.authAccount(AuthParams("企业ID", "账号", "密码", false)) }
.asFlowOnIO()
.onEach { println("userId=${it.userId}") }
.launchIn(GlobalScope)
tips:示例中使用 GlobalScope,实际场景中请根据需要自行替换,示例不保证协程运行作用域的合理性与有效性
2、缓存授权信息
当不通过授权服务进行登录,或者是授权服务无法满足需要的登录方式,通过外部的登录方式获取到授权信息后,可以通过以下的方式将授权信息缓存到授权服务中,以便在其它地方或供其它的服务使用。
XFServerManager.getServerAgent<XFAuthServer>(XFAuthServer.SERVER_ID)
.getServer()
.asFlowOnIO()
.onEach {
it.saveUserAuthInfo(XFAuthInfo("userId","accessToken","refreshToken","authorize",7200))
}
.launchIn(GlobalScope)
3、监听授权信息变更
如果需要对授权信息变更进行监听,授权服务也提供了相应的功能以便其它服务使用。
XFServerManager.getServerAgent<XFAuthServer>(XFAuthServer.SERVER_ID)
.getServer()
.map2X { it.addAuthChangedListener(listener) }
.asFlowOnIO()
...
移除授权信息监听时,可以使用以下方式移除监听。
XFServerManager.getServerAgent<XFAuthServer>(XFAuthServer.SERVER_ID)
.getServer()
.map2X { it.removeAuthChangedListener(listener) }
.asFlowOnIO()
...
4、获取授权信息
如果需要访问授权信息时,可以通过以下方法访问。
XFServerManager.getServerAgent<XFAuthServer>(XFAuthServer.SERVER_ID)
.getServer()
.asFlow()
.map { it.getUserAuthInfo() }
.onEach { println(it?.accessToken) }
...
注意授权服务默认是在 SDK 初始化后即可使用,但是授权信息是需要在用户登录或者是调用了缓存授权信息接口后才会存在数据,请尽量确保用户在授权完成之后再调用此接口。