服务端集成要点|服务端集成要点 @ 腾讯云通信

【服务端集成要点|服务端集成要点 @ 腾讯云通信】腾讯具有高并发、高可靠的即时通信能力;利用 腾讯云通信 提供的 SDK 可以将即时通信功能快速集成到自己的 APP 中;
Web 集成的主要工作在客户端集成,服务端集成的工作并不多,本文说一下其要点;
概念

  • 账号登录集成
    账号登录有 独立模式 和托管模式两种;对于有自己的账号系统的应用来说,独立模式是你的选择;账号的独立模式并不影响 资料(昵称和头像就是典型的标配资料字段)和 群组 的托管;
  • UserSig
    腾讯云通信专门提供了 TLS(Tencent Login Service)后台 API,生成公私钥、生成 UserSig 和校验 UserSig;
    简单一点说,就是使用腾讯后台给你的应用生成的私钥(私钥由开发者保存,公钥由腾讯保存)为你的自有账号系统的用户ID(Identifier)签发一个新“密码”(以下称为UserSig);而后客户端使用这个 Identifier/UserSig 就可以登录腾讯云通信(腾讯使用公钥对签名 UserSig 进行校验),从而使用其提供的云通信服务;
  • Identifier
    你提供给腾讯的用户ID应当唯一,不论是你账号系统的用户ID也好,还是用户名也好,都可以;
AppServer 提供的 App 接口
  1. 注册时:基于我们的业务特点(在线即时沟通),在注册的同时即生成 UserSig,并记录下过期时间;
    TLS 后台 API 默认接口生成的签名有效期为 180 天;文档说开发者可以使用含有有效期参数的接口自行设定有效期,但是所提供的工具 linux-signature64 并无用来设定有效期的参数;
  2. 登录时:检查 UserSig 有效期,如果过期则予以更新(重新生成一个新签名);
    登录的核心要义:服务端通过验证由客户端提交的用户名和密码,以在客户端浏览器种下相应 cookie 和或 token 为标志;至于是否要在登录请求的响应中附加返回相应属性信息,要看是否会引起功能耦合;如果在登录时返回 UserSig,则势必会引发 cookie 和 UserSig 时效性的一致性问题,因此本次保持登录接口响应的最简设计;
  3. 获取用户信息时:返回有效的 UserSig 和 过期时间(供测试);
  4. IM 群组:设置独立的游客和客服账号,加入到每个群组;
  5. 在实际过程中,登录注册是一个接口;
    即:在处理登录时,若发现尚未注册,则即时注册;凭手机号/验证码登录,故这类隐性注册并无昵称/头像;
AppServer 提供的回调接口
  1. 群内发言之后回调,记录谁发过言;
  2. 上下线回调;
  3. 创建群组之后回调,发送欢迎消息;
典型流程 服务端集成要点|服务端集成要点 @ 腾讯云通信
文章图片
腾讯这一侧使用的都是identifier(用户id)和 UserSig(sig)
  • 账号注册在 APP 自有注册服务器完成,账号/密码无需同步到腾讯;
    即:无须同步注册到腾讯;
  • 开发者和腾讯之间通过签名验证建立信任关系;
    下载保存应用私钥、由私钥加密指定数据以生成用户账号签名(UserSig)是整个流程中的关键环节;
  • 终端首次登录腾讯后台即可在腾讯后台生成腾讯内部ID,并不需要 AppServer 调用 账号导入接口 事先同步到腾讯;
  • 为降低耦合,终端(客户端)在保存用户信息时,除了保存一份到 AppServer 外,还要自己调用 IM SDK 用户资料 接口将更新同步到腾讯后台:
    - 昵称:Tag_Profile_IM_Nick;头像:Tag_Profile_IM_Image;更多标配资料字段;
    - 昵称和头像只在个人中心修改资料和激活工程商时才会提供;实际使用群组消息中仅用到 ImServer 传送的昵称,故头像也无须同步;
PHP Server SDK
  • v1.4 版
  • 粗略使用就发现有几个函数功能实现并不完善;
    也不像是在积极改进的样子,因为 github 上自 2016.7.4 之后再没更新;
    比如:设置签名有效期就是一个功能尚未实现的例子;
  • REST API 在线调试工具;
值得阅读的指引
  • 服务端集成指引
  • REST API 简介
  • REST API 接口列表
  • 第三方回调接入指引
    利用回调,APP 后台可以进行必要的干预,比如:在 群内发言之后回调,APP 后台就可以记录谁在群组内发过言;
    服务端集成要点|服务端集成要点 @ 腾讯云通信
    文章图片
    群内发言之前回调的流程示例图

    推荐阅读