HarmonyOS Sample 之 JavaDistributeAuthDemo分布式身份认证功能 原创 精华
本文正在参与优质创作者激励
目录
HarmonyOS Sample 之 JavaDistributeAuthDemo 分布式身份认证
1.介绍
相信大部分关注HarmonyOS的人来说,对于HarmonyOS的特性都有一定的了解了,从官网我们可以看到一些关键的提炼:“统一OS,弹性部署”,“硬件互助,资源共享”,“一次开发,多端部署”
接下来几期就想和大家一起就HarmonyOS的特性,来找一些案例进行学习和实践,目的是进一步巩固对特性的理解然后去灵活应用。
这一期是通过分布式身份认证的功能来了解一下 常用的通信方法。
分享的内容:
1.在设备迁移或协同时都需要显示可用设备列表,有一种方式不需要自己单独获取设备,也不需要自己定义列表布局文件就可以显示设备窗口。
2.如何实现一个分布式身份认证授权的功能。
案例来自codelabs官方示例分布式鉴权(Java) 本贴进行了整理和分析,供学习和交流使用。
2.效果展示
3.搭建环境
安装DevEco Studio,详情请参考DevEco Studio下载。
设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
下载源码后,使用DevEco Studio 打开项目,模拟器运行即可。
真机上运行,参见真机运行应用
4.项目结构
5.代码讲解
5.1 一种显示流转设备列表的方法
这种方式不需要自己单独获取设备,也不需要定义对应的布局文件就可以显示设备窗口。
①向ContinuationRegisterManager注册一个跳转的能力,并获得分配给该能力的注册令牌
②完成流转后的状态回调,提供用于侦听设备连接状态更改的回调
③完成流转请求的回调,显示可流转的设备
5.2 实现一个分布式身份认证授权的功能
为了方便理解,把发送请求的设备成为 请求授权设备,进行授权操作的设备成为 授权设备。
RegisterManager 自定义了CommonEvent 接口,MainAbilitySlice实现了该接口,所以RegisterManager具备了 到 MainAbilitySlice方向的通信能力。
RegisterManager 完成了对 ConstUtil.ORDER_CODE 类型公共事件的订阅,所以就能够接收到该类型的公共事件。
认证授权的完整过程:
①在请求授权设备上,RegisterManager提供了注册设备流转能力的函数,在设备连接完成的状态回调中 提交了一个“点击设备”的任务到执行队列。
在MainAbilitySlice中,在完成流转能力注册完成后,在“点击设备” 的回调中,打开了远端授权设备上的AuthrRemoteSlice页,同时传递了ConstUtil.DEVICE_ID和ConstUtil.ORDER_CODE(ConstUtil.START_ORDER)参数过去,其中ConstUtil.START_ORDER并没有使用。
②在授权设备上的AuthrRemoteSlice页被打开后,点击允许或不允许时,请求分布式权限后,又打开了请求授权设备的 MainAbility。
③在请求授权设备上,由于MainAbility设置为singleton模式(“launchType”: “singleton”)而且已经实例过,所以请求进入到onNewIntent函数。
config.json
在onNewIntent函数中,通过 CommonEventManager发布一个ConstUtil.ORDER_CODE类型的事件,该事件被RegisterManager收到并进行了处理,如何处理的呢,又通过RegisterManager.CommonEvent 把事件传递给了实现了RegisterManager.CommonEvent接口MainAbilitySlice,最终显示对端设备的授权结果(允许/不允许)
MainAbilitySlice收到消息
6.思考总结
分布式中常用的通信方式:
1.Intent 直接传递参数(intent.setParam(ORDER_CODE, type))
2.公共事件订阅/发布的方式(Intent封装到CommonEventData)
3.自定义接口的方式(RegisterManager.CommonEvent)
7.完整代码
附件可以直接下载
很经典的案例,感谢楼主整理分享。
讲解很详细,也很感谢资源分享
好贴值得反复学习
感谢分享