帐号集成与登录

帐号集成与登录

帐号集成登录过程

  1. App 在用户注册时,由 App Server(App自己的服务器)通过创建帐号的接口向网易云通信 Web Server 发起创建帐号的请求。具体参见服务端API接口:创建网易云通信ID
  2. 帐号创建成功后,网易云通信 Web Server 会返回该帐号的 token 等信息,App Server 要负责保存 token 信息
  3. App 发起登录请求时,先走自有的登录验证逻辑,如帐号密码验证
  4. 验证成功后,App Server 将该用户对应的 token 返回给 App 客户端,客户端负责保存 token
  5. 当 App 需要调用网易云通信的IM服务时,需要先进行 token 验证,以登录 IM 服务
  6. token 验证成功后,登录 IM 服务成功,即可调用 SDK 的相关接口进行 IM 消息服务

使用网易云通信 IM 服务时,App 帐号和网易云通信 ID(accid)是彼此独立的,accid 只用于 IM 功能的鉴权,和App本身的用户信息没有任何关系。理解这一点非常重要。一般我们推荐 App 用户帐号密码和网易云通信登录 IM 使用的 accidtoken 是完全不一致的,后者不由终端用户创建,而是应用服务器分配,以保证其安全性。

手动登录和自动登录

登录分为手动登录和自动登录两种模式,这两种模式的区别主要在于:

第一点,SDK 认为手动登录即是终端用户发起登录的流程,那么在登录失败后(如网络情况不佳,密码错误)SDK 会触发相应回调,并停止重连操作,等待用户再次发起登录操作。而自动登录则会在登录失败后仍旧尝试重连,直到登录成功为止(密码错误等情况除外)。 第二点,服务器为了保障当前用户的安全性,在登录时会根据当前登录是否是自动登录进行检查设备唯一性的检查,如果当前登录为自动登录,且当前登录设备不是上一次登录设备,则会自动禁止其登录,以保证安全性。当然你也可以设置自动登录为强制登录,以忽略安全性检查。这种做法比较适合非 IM 产品延迟加载通讯模块的场景:通过服务器下发的正确云信 ID 直接进行自动登录,无需关心任何登录出错的情况,简单方便。

断线重连

一旦登录成功后(或者调用过自动登录),IM SDK 将接管所有的重连情况:在网络正常的情况下不停重试重连直到正常登录为止,并不需要做额外的登录操作(聊天室同理)。

产品形态与登录策略

接入网易云通信IM服务的产品大致分为两种形态:

对于 IM 产品,由于通讯能力是核心能力,如果云信无法登录成功则整个 App 无法正常表现,所以推荐使用如下的流程:

推荐登录流程

只有应用服务器和云信服务器都登录成功才认为整个登录完成。 而对于非 IM 产品而言,通讯能力是可以在登录应用服务器成功后延迟加载:登录成功拿到服务器下发的云信 ID 和 token 后进行自动登录即可。

用户控制台帐号管理

如果您暂时只需进行快速测试,可以在用户控制台,通过「帐号管理」功能快速创建、管理帐号,而无需再通过调用服务端 API 进行帐号创建。

帐号管理

需要注意的是,目前通过 server 端接口注册的帐号不会出现在控制台的帐号列表中。这么做的原因是:

已有存量帐号集成

对于已经存在大量用户帐号的应用,若需要接入网易云通信 IM 服务,我们推荐遵从「按需创建」的原则。

考虑到存量帐号中可能存在相当比例的僵尸用户或非活跃用户,在迁入网易云通信时直接全量导入对您是一种不必须要的开销。开发者可以在用户第一次触发使用网易云通信的 IM 行为时检查该用户的网易云通信是否创建了 accid,如未创建则遵循帐号创建流程,在后台自动创建再登录,这种方式会使您的用户只有在必要的时候才会创建网易云通信的帐号,同时在网易云通信中创建的用户都是有效的活跃用户。