当前位置: 首页 > news >正文

h5美食制作网站模板下载电子商务网站前台业务系统主要是

h5美食制作网站模板下载,电子商务网站前台业务系统主要是,软文推广网站,app下载页面一、核心概念和类概览这三个类协同工作,共同管理和维护喜马拉雅账号的登录状态、用户信息,并处理与其他平台("Federation")的账号绑定。XimalayaAccountProvider:这是一个 Android ContentProvider 的实现。它的主要作用…

一、核心概念和类概览

        这三个类协同工作,共同管理和维护喜马拉雅账号的登录状态、用户信息,并处理与其他平台("Federation")的账号绑定。

XimalayaAccountProvider:

        这是一个 Android ContentProvider 的实现。它的主要作用是作为跨进程通信的桥梁,允许其他应用或模块(特别是 XimalayaAccountManager)安全地访问和操作喜马拉雅账号数据和功能,而无需直接访问底层的 XimalayaAccountRepository。它通过 call() 方法暴露了一系列账号相关的操作,如获取用户信息、刷新 Token、登录、登出等。

XimalayaAccountRepository:

        这是一个数据仓库(Repository)。它的核心职责是处理所有与喜马拉雅账号数据相关的业务逻辑。它不关心数据从哪里来(网络、缓存或本地数据库),只负责获取、处理和存储数据。它封装了与喜马拉雅开放平台 SDK 的交互,例如获取用户信息、检查登录状态、刷新 Token、执行登出操作等。它还负责将账号状态同步到另一个名为 "JDO" 的数据仓库,这可能是另一个平台或服务。

XimalayaFederationDelegate:

        这是一个用于处理“联邦”(Federation)账号绑定的委托类。它实现了 ILoginDelegateILinkDelegate 接口,表明它能够处理登录和绑定相关的请求。这里的“联邦”指的是将喜马拉雅账号与另一个主账号系统(可能是汽车信息娱乐系统或其他平台)进行关联。该类负责在系统启动时尝试使用联邦 Token 自动登录,并处理来自主账号系统的绑定和解绑请求。

二、 登录流程(LoginDelegateXimalayaAccountRepository

        登录流程分为几种情况,但核心都依赖 XimalayaAccountRepository 来执行实际的网络或本地操作。

通过 autoLoginWithFederation() 自动登录

  1. 检查联邦状态: LoginDelegateautoLoginWithFederation() 方法在启动时被调用。它首先通过 CommonDataHelper.getFederationInfo() 获取联邦账号信息。

  2. 验证联邦信息: 它检查获取到的联邦信息是否有效 (isValid())、是否处于绑定状态 (federationStatus.toBoolean()),并且是否包含 Token。

  3. 调用 loginWithFederationToken(): 如果联邦信息有效且包含 Token,它会调用 XimalayaAccountManagerloginWithFederationToken(federationToken) 方法。

  4. 跨进程调用: XimalayaAccountManager 通过 ContentResolver.call() 调用 XimalayaAccountProvider 中的 setFederationTokenAndLogin 方法,并将联邦 Token 作为参数传递。

  5. XimalayaAccountRepository 执行登录: XimalayaAccountProvidercall() 方法接收到请求后,会调用 accountRepository.autoLogin(arg),其中 arg 就是联邦 Token。

  6. 刷新 Token: XimalayaAccountRepositoryautoLogin(refreshToken) 方法首先将联邦 Token 保存为刷新 Token (accountStorage.saveRefreshToken(refreshToken)),然后调用 dataRepository.refreshToken() 去尝试获取新的访问 Token 和用户信息。

  7. 更新状态: 如果 refreshToken() 成功,XimalayaAccountRepository 会调用 updateOnlineUserInfo()syncLoginStatus(true) 来更新本地缓存、LiveData 并同步登录状态到 JDO 平台。

通过 checkLoginResult() 登录(例如,二维码登录)

  1. 获取二维码 Token: 可能是通过 XimalayaAccountManager 调用 getQRCodeToken(),最终由 XimalayaAccountRepositorygetQRCodeToken() 方法调用 dataRepository.generateQrcode()

  2. 检查登录结果: 应用程序会周期性地调用 XimalayaAccountManagercheckLoginResult(token) 方法,来查询用户是否已经通过扫描二维码登录。

  3. 跨进程调用: XimalayaAccountManager 同样通过 ContentResolver.call() 调用 XimalayaAccountProvidercheckLoginResult 方法。

  4. XimalayaAccountRepository 检查: XimalayaAccountProvider 接收到请求后,调用 accountRepository.checkLoginResult(it)

  5. 处理登录结果: XimalayaAccountRepository 调用 dataRepository.checkLoginResult(qrcodeId)。根据返回的 LoginResult,如果 codeLOGIN_SUCCESSWAIT_USERINFO,它会调用 updateUserInfo() 来更新状态,并在登录成功时调用 syncLoginStatus(true)

三、 登出流程

  1. 发起登出: 用户或系统(例如 LoginDelegateonLogOutInvoked() 方法)发起登出请求。

  2. LoginDelegate.onLogOutInvoked(): 这个方法是联邦系统的登出回调。它会通过 ContentResolver.call() 调用 XimalayaAccountProviderlogout 方法。

  3. XimalayaAccountProviderlogout: 该方法调用 accountRepository.logout()

  4. XimalayaAccountRepository 执行登出:

    • 首先,它调用喜马拉雅 SDK 的 AccessTokenManager.getInstanse().loginOut() 来执行 SDK 内部的登出逻辑。

    • 然后,它清除本地存储的 Token (accountStorage.saveToken("", "", 0)) 和用户信息 (accountStorage.saveUserInfo(null))。

    • 最后,它更新 LiveData (updateUserInfo()) 并调用 syncLoginStatus(false) 将登出状态同步到 JDO 平台。

四、 账号绑定/解绑流程

账号绑定和解绑由 LinkDelegate 处理。这个类实现了 ILinkDelegate 接口,用于响应来自联邦主账号系统的绑定/解绑请求。

绑定 (onLinkFederationInvoked)

  1. 收到绑定请求: 当联邦系统发起绑定请求时,LinkDelegateonLinkFederationInvoked() 方法被调用,并传入主账号的 puidpvin

  2. 检查本地登录状态: 该方法首先检查本地喜马拉雅账号是否已登录 (accountManager.getUserInfoValue() != null)。

  3. 同步绑定状态: 如果已登录,它会调用 jdoDataRepository.uploadMediaAccountStatus()。这个方法是关键,它将喜马拉雅账号的登录状态和信息(refreshTokennicknameavatar_url 等)以及联邦系统的 puidpvin 上传到 JDO 平台,从而完成账号的逻辑绑定。

  4. 返回结果: 根据 uploadMediaAccountStatus() 的结果,返回 ResponseBean.SUCCESSResponseBean.obtainFailure()

解绑(onUnlinkFederationInvoked

  1. 收到解绑请求: 当联邦系统发起解绑请求时,LinkDelegateonUnlinkFederationInvoked() 方法被调用。

  2. 同步解绑状态: 它调用 jdoDataRepository.uploadMediaAccountStatus(),但这次将 federationStatus 参数设为 0tokenrefreshToken 设为 null,以通知 JDO 平台喜马拉雅账号与主账号的绑定关系已被解除。

  3. 返回结果: 根据 uploadMediaAccountStatus() 的结果,返回 ResponseBean.SUCCESSResponseBean.obtainFailure()

五、类的相互作用总结

XimalayaAccountRepository:

        负责业务逻辑数据源(网络 API、本地存储)的交互。它不直接与 UI 或其他进程通信,而是通过 LiveData 或返回数据对象的方式。

XimalayaAccountProvider:

        负责跨进程通信。它将 XimalayaAccountRepository 的功能以 ContentProvider 的形式暴露出去,使得其他应用或模块可以通过 ContentResolver.call() 远程调用这些功能。

XimalayaAccountManager:

        作为一个客户端类,它封装了对 XimalayaAccountProviderContentResolver.call() 调用,提供了更友好的 Kotlin suspend 函数接口,供上层业务逻辑(如 LoginDelegate)调用。它也负责通过 ContentObserver 监听 XimalayaAccountProvider 的数据变化。

XimalayaFederationDelegate:

        负责特定场景(联邦绑定)的业务逻辑。它依赖 XimalayaAccountManager 来执行具体的登录、登出和状态同步操作,并实现联邦系统所需的特定接口。

http://www.dtcms.com/a/485798.html

相关文章:

  • uniapp 提取 安卓平台软件包名称 公钥 证书MD5指纹
  • Redis 事务机制:Pipeline、ACID、Lua脚本
  • 【实时Linux实战系列】在实时系统中安全地处理浮点运算
  • 基于仿真和运行时监控的自动驾驶安全分析
  • Java-Spring入门指南(二十七)Android Studio 第一个项目搭建与手机页面模拟器运行
  • Highcharts 绘制之道(2):高级绘图技术与连通关系
  • 学习笔记——GPU训练
  • 数据结构——二叉搜索树Binary Search Tree(介绍、Java实现增删查改、中序遍历等)
  • 网站个人主页怎么做wordpress 网银支付
  • 网站建设常州青之峰陕西西安网站设计公司
  • FTP 抓包分析实战,命令、被动主动模式要点、FTPS 与 SFTP 区别及真机取证流程
  • Linux下的权限与文件
  • 《算法闯关指南:优选算法--二分查找》--19.x的平方根,20.搜索插入位置
  • 从中序与后序遍历序列构造二叉树
  • 【超分辨率专题】DOVE:特色双阶段训练的单步Real-World视频超分辨
  • 《Linux基础入门指令(二)》:从零开始理解Linux系统
  • 响应式网站开发图标郑州网站商城建设
  • 仓颉编程(3)基本操作符
  • 潍坊网站建设推广公司上海公司注销的流程及需提供的材料2023
  • 《算法通关指南---C++编程篇(1)》
  • Go语言:记录一下Go语言系统学习的第一天
  • GraphRAG 与 Neo4j 社区版:能力边界与适用场景学习总结
  • 【OC】计算器的仿写
  • 东莞工厂网站建设网站建设要买哪些软件
  • 5-3〔OSCP ◈ 研记〕❘ SQL注入攻击▸基于错误的SQLi 盲注SQLi
  • AWS Redshift 数据仓库完整配置与自动化管理指南
  • 《C++ 手搓list容器底层》:从结构原理深度解析到功能实现(附源码版)
  • 成都那家做网站好注册网约车主需要什么条件
  • Wireshark:HTTP、MQTT、WebSocket 抓包详细教程
  • Linux内核架构浅谈36-Linux页帧描述:struct page数据结构的设计与关键成员