IM 即时通讯
Android
产品介绍
简介
产品优势
主要功能
功能介绍
帐号集成与登录
群组功能
聊天室功能
聊天室标签功能
圈组功能
多端登录与互踢策略
质量数据监控台
海外数据中心
IM平滑迁移方案
接口及业务限制
更新日志
IM UIKit 更新日志
NIM SDK 开发版更新日志
NIM SDK 稳定版更新日志
体验 Demo
下载 SDK 与 Demo 源码
快速开始
跑通 IM Demo 源码
实现单聊消息收发(不含 UI)
跑通圈组 Demo 源码
实现圈组消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能概览
快速集成 IM UIKit
组件导入
初始化
界面跳转
自定义用户信息
全局配置
会话列表相关
集成会话列表界面
会话列表事件监听
自定义会话列表界面 UI
会话列表 API 概览
会话消息相关
集成会话界面
会话界面事件监听
实现音视频通话
实现地理位置消息功能(含 UI)
实现自定义消息发送(含 UI)
自定义会话界面 UI
会话消息 API 概览
通讯录相关
集成通讯录界面
自定义通讯录界面 UI
通讯录界面事件监听
通讯录 API 概览
IM UIKit 常见问题排查
IM UIKit API 概览
不含 UI 集成
集成 SDK
初始化
登录相关
登录 IM
多端登录与互踢
登出 IM
消息相关
消息概述
消息收发
自定义消息收发
消息配置选项
NOS 存储场景
广播消息收发
消息已读回执
消息撤回
消息重发与转发
消息更新
消息过滤
语音消息处理
插入本地消息
历史消息
最近会话
服务端会话服务
用户资料
用户关系
在线状态订阅
系统通知
系统通知概述
内置系统通知管理
内置系统通知未读数
自定义系统通知收发
离线推送与消息提醒
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
聊天室
圈组功能
圈组概述
登录管理
服务器相关
服务器概述
服务器管理
服务器成员管理
游客功能
服务器未读数管理
频道相关
频道概述
频道管理
频道黑白名单
实时互动频道
频道分组
频道分组黑白名单
频道未读数管理
搜索服务器和频道
身份组相关
身份组概述
身份组应用场景
服务器身份组
频道身份组
用户定制权限
频道分组身份组
自定义权限项
成员权限查询与判定
身份组相关查询
圈组订阅机制
圈组消息相关
图解圈组消息流转
圈组消息收发
圈组消息撤回
圈组消息更新
圈组消息删除
消息正在输入
会话消息回复(Thread)
圈组快捷评论
获取频道最后一条消息
查询历史消息
查询@我的消息
圈组消息缓存
圈组消息搜索
圈组系统通知相关
圈组系统通知概述
圈组系统通知收发
圈组系统通知更新
圈组离线推送
圈组内容审核
圈组相关抄送
圈组第三方回调
圈组各端接口命名差异
反垃圾
聊天扩展
其他
最佳实践
IM 登录最佳实践
IM 应用隐私合规
聊天室重要消息投递
API 参考
Android SDK API
Android SDK 状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
开通聊天室功能
配置应用客户端标识
常见问题
FAQ
错题集
Android 离线推送
实现离线推送
配置消息的推送属性
设置群消息强制推送
设置推送全局免打扰
设置多端推送策略
集成小米推送
集成华为推送
集成荣耀推送
集成 OPPO 推送
集成 vivo 推送
集成魅族推送
集成谷歌推送(FCM)
消息提醒
实现消息提醒
配置消息提醒功能
设置群消息强制提醒
设置消息提醒文案
定制通知栏显示信息
Android 端推送问题排查
第三方推送厂商的限制说明
服务协议

帐号集成与登录

更新时间: 2023/02/16 14:31:12

本文介绍账号集成与登录的技术原理和如何选择登录策略。

技术原理

IM 的登录与账号集成密切相关。上图展示了应用集成 NIM SDK 后,从账号集成到登录 IM 成功的主要流程:

流程序号
说明
1. 用户在应用客户端注册用户账号时,由应用服务端向云信服务端发起创建 IM 帐号的请求。
2. IM 帐号创建成功后,云信服务端会返回该 IM 帐号(即accid)token等信息。此时,应用服务端需要负责保存accidtoken的映射关系。
3. 应用客户端发起登录请求时,先走应用自有的登录验证逻辑,如帐号和密码的验证
4. 验证成功后,应用服务端将与该用户对应的accidtoken等信息返回给应用客户端。此时,应用客户端需要负责保存accidtoken的映射关系。
5. 当应用客户端需要调用云信的 IM 服务时,需要先进行token验证,以登录 IM 服务
6. token验证成功后,应用客户端登录 IM 服务成功。之后用户便可调用 NIM SDK 的相关接口使用 IM 服务,如进行 IM 消息收发
  • 终端用户使用云信 IM 服务时,应用本身的用户帐号和云信的 IM 账号(accid彼此独立。云信的 IM 账号只用于云信 IM 服务的鉴权,IM 账号并不等同于应用的用户账号
  • 应用的用户帐号和密码,与云信登录 IM 使用的 accidtoken 完全不一致。accidtoken 不由终端用户创建,而是由应用服务端分配,以保证安全性。

登录策略

登录策略指您的应用需要采用的一种或多种 IM 登录方式。

控制台配置

您可按需在云信控制台配置您的应用需要采用的登录策略(可多选)。如未选择相应的登录策略,可能导致用户调用登录接口时因无登录权限而报错(状态码:403)。

配置路径:在控制台左侧导航栏选择应用,再进入IM 免费版/专业版 > 功能配置 > 登录策略配置

  • 静态 token 登录:用户手动登录 IM 时需传入静态 token。静态 token 默认永久有效,且恒定不变,除非主动调用服务端 API刷新。
  • 动态 token 登录:用户手动登录 IM 时需传入动态 token。动态 token 具备时效性,适用于对于用户信息安全有较高要求的业务场景。
  • 通过第三方回调登录:用户手动登录 IM 时的鉴权工作由指定的第三方服务器(可以是应用服务器)进行,云信服务端不做 IM 登录鉴权

登录方式概览

NIM SDK 登录方式分为手动登录自动登录两大类。其中手动登录可进一步分为上述的静态 token 登录、动态 token 登录和通过第三方回调登录。

登录方式
子方式 鉴权方式 使用场景
手动登录 静态 Token 登录 静态 Token 鉴权 如下登录场景,用户需要手动登录 IM:
  • 在新设备上首次登录 IM
  • 被同时在线的其他设备踢下线后再次登录 IM
  • 切换 IM 账号后再次登录 IM
  • 注销登录后再次登录 IM
动态 Token 登录 动态 Token 鉴权
通过第三方回调登录 通过第三方回调鉴权
自动登录 继承手动登录的方式 继承手动登录的鉴权方式 应用被清理后,用户再次点击应用图标启动应用时,无需输入用户名和密码即可完成登录的场景。自动登录需在手动登录成功后使用

手动登录与自动登录主要区别在于:

差异点
说明
NIM SDK 是否接管登录失败后的处理
  • 手动登录:NIM SDK 认为手动登录即是终端用户发起登录的流程,因此在登录失败后(如网络情况不佳、密码错误),NIM SDK 会触发相应回调,并停止重连操作,等待用户再次发起登录操作
  • 自动登录:自动登录失败后仍旧尝试重连,直到登录成功为止(密码错误等情况除外)
云信服务端是否验证当前登录设备的安全性
  • 手动登录:不验证
  • 自动登录:自动登录时,如果当前登录设备不是上一次登录设备,云信服务端会自动禁止其登录,以保证安全性。

如您选择自动登录,当您的应用在后台被唤起时,会计算为1次登录行为,计入日活统计作为计费依据。

产品形态与登录方式

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

产品形态 特征 例子
IM 产品 通讯为其核心模块 微信、易信、网络直播等
非 IM 产品 通讯为其附带模块 各种有私信模块的应用
  • 对于IM 产品,由于通讯能力是核心能力,如果云信无法登录成功则整个应用将无法正常表现,所以推荐在执行业务逻辑前,首先完成应用服务端和云信服务端的登录。只有应用服务端和云信服务端都登录成功才认为整个登录完成。

  • 对于非 IM 产品而言,通讯能力是可以在登录应用服务端成功后延迟加载,登录成功拿到服务端下发的云信 IM 账号和 token 后进行自动登录即可。

相关文档

实现 IM 登录的具体集成流程,参见登录 IM

此文档是否对你有帮助?
有帮助
我要吐槽
  • 技术原理
  • 登录策略
  • 控制台配置
  • 登录方式概览
  • 产品形态与登录方式
  • 相关文档