在线鉴权
- 仅 2.1.0 版本以下 SDK 支持使用本文档进行在线鉴权。
- 2.1.0 及以上版本,可直接调用 create 接口创建 Effects 对象时,使用 AppID 及 AppSign 鉴权,且无需关心鉴权逻辑,已在 SDK 内部实现。
概览
本文将介绍如何获取鉴权文件、以及在线鉴权的实现方案。
鉴权文件
鉴权文件是软件使用权的凭证,包含以下特征:
- 授权的时间
- 授权的平台
- 授权的 SDK 版本号
- 授权的功能特性
在线鉴权
在线鉴权,是指用户的客户端访问 ZegoEffects 服务端,申请鉴权文件,进行网络验证的方式。从客户的角度来看可以通过在线鉴权快速,安全的通过网络验证,相比离线鉴权更可控更高效。
在线鉴权只是获取鉴权文件 License,只有通过 SDK 鉴权校验的客户端,才可以使用 ZegoEffects SDK 和 AI 功能。
ZEGO 建议您在业务层上,定时拉取、更新在线鉴权的 License 数据,避免出现本地缓存 License 数据过期、导致校验不通过的问题。
鉴权实现原理
在线鉴权有两种方式,开发者可以通过自己的客户端,或自己的业务服务端访问 ZegoEffects 服务端,进行鉴权。
以下将介绍“向 ZegoEffects 服务端请求鉴权文件”的两种方式:通过客户端发送请求
和通过开发者服务端发送请求
,对比如下:
类别 | 通过客户端发送请求 | 通过开发者服务端发送请求 |
---|
实现步骤 | - 客户端访问 ZegoEffects SDK,获取授权信息。
- ZegoEffects SDK 返回授权信息 AuthInfo 到客户端。
- 客户端通过 URL 携带 AppID 和 AuthInfo,向 ZegoEffects 服务端发送请求。
- ZegoEffects 服务端返回鉴权文件 License 到客户端。
- 导入资源和模型文件。
- 客户端传入获取到的 License 文件,创建 Effetcs 对象。
- 启用 AI 功能,开始图像处理。
| - 开发者服务端通过公共网关接口 URL,直接向 ZegoEffects 服务端发送请求。
- ZegoEffects 服务端返回鉴权文件 License 到开发者服务端。
- 开发者服务端下发 License 文件到客户端。(由开发者自行实现此业务功能)
- 导入资源和模型文件。
- 客户端传入获取到的 License 文件,创建 Effetcs 对象。
- 启用 AI 功能,开始图像处理。
|
流程图 | | |
优势 | - 简单、容易接入。
- 开发者无需搭建自己的业务后台,也无需自行管理鉴权文件。
| - 开发者自行搭建的业务后台,请求网络相对稳定;且由于服务器的位置相对稳定,命中 DNS 缓存的几率也会提高。
- 开发者可通过自己的客户端,自行设置鉴权能力,管理鉴权文件,灵活性较高。
|
前提条件
开始实现鉴权之前,请在 ZEGO 控制台 创建项目,获取到了接入 ZegoEffects SDK 服务所需的 AppID 和 AppSign,详情请参考 控制台 - 项目管理 中的“项目信息”;并联系 ZEGO 技术支持,开通 ZegoEffects 相关套餐服务权限。
实现在线鉴权
1. 向 ZegoEffects 服务端请求鉴权文件
以下分别介绍向 ZegoEffects 服务端请求鉴权文件的两种方式(二选一即可)。
2. ZegoEffects 服务端返回鉴权文件 License
服务端返回的消息示例如下:
{
"Code": 0,
"Message": <message>,
"Data": {
"License": <license>
}
}
{
"Code": 0,
"Message": <message>,
"Data": {
"License": <license>
}
}
- 如果请求获取鉴权文件成功,则返回字段
License
中携带信息即为鉴权文件的内容。
- 若请求失败,则返回字段
Code
会返回错误码,Message
为对应的错误信息。
根据请求方式的不同,返回字段中的 Code
取值也不相同,具体解释如下:
参数名 | 类型 | 说明 |
---|
Code | unsigned int32 | 通过客户端发送请求时,ZegoEffects 服务端返回的错误码,取值如下:- 0:成功。
- 1:参数有误。
- 2:Token 有误。
- 3:证书无效,AppId 或者 Bundle ID 不正确。
- 4:服务内部问题。
| 通过开发者服务端发送请求时,ZegoEffects 服务端返回的错误码,取值如下:- 0:成功。
- 910001:参数有误。
- 910002:证书无效。
- 910003:服务内部问题。
- 910004:授权信息有误。
|
Message | string | 返回的提示信息,和 “Code” 的取值相对应。- 0:Success
- 1:Invalid argument
- 2:Invalid token
- 3:No valid license
- 4:Service unavailable
| 返回的提示信息,和 “Code” 的取值相对应。- 0:Success
- 910001:Invalid argument
- 910002:No valid license
- 910003:Service unavailable
- 910004:Auth error
|
Data | object | “Code” 为 0 时,返回鉴权文件的内容。 |
其中,返回字段 Data :
参数名 | 类型 | 说明 |
---|
License | string | 鉴权文件的内容。 |
3. 传入鉴权文件创建对象
将获取的鉴权文件设置到 SDK 中,以激活相关功能模块。
开发者需要从返回字段 “Data” 的 “License” 字段中获取鉴权文件内容,然后调用 create 接口,并将鉴权文件传给 ZegoEffects SDK,创建 Effects 对象。
// 创建 Effects 对象前,请先调用 setResources 接口导入资源和模型
// 传入鉴权文件,创建 Effects 对象
NSString* license = @"xxxxxxxx";
ZegoEffects* effects = [ZegoEffects create:license];
// 创建 Effects 对象前,请先调用 setResources 接口导入资源和模型
// 传入鉴权文件,创建 Effects 对象
NSString* license = @"xxxxxxxx";
ZegoEffects* effects = [ZegoEffects create:license];
// 创建 Effects 对象前,请先调用 setResources 接口导入资源和模型
// 传入鉴权文件,创建 Effects 对象
String license = "xxxxxxx";
ZegoEffects mEffects = ZegoEffects.create(license, applicationContext);
// 创建 Effects 对象前,请先调用 setResources 接口导入资源和模型
// 传入鉴权文件,创建 Effects 对象
String license = "xxxxxxx";
ZegoEffects mEffects = ZegoEffects.create(license, applicationContext);
相关文档
客户端在线鉴权,通过 URL 地址访问到 ZegoEffects 服务端时,为什么有时会出现失败?