AI视觉 Beta
  • 平台类型
  • 框架 / 引擎
  • iOS
  • Android
  • macOS
  • Windows
  • Linux
  • Web
  • 小程序

在线鉴权

更新时间:2021-10-15 17:44

1 概览

本文将介绍如何获取鉴权文件、以及在线鉴权的实现方案。

1.1 鉴权文件

鉴权文件是软件使用权的凭证,包含以下特征:

  • 授权的时间
  • 授权的平台
  • 授权的 SDK 版本号
  • 授权的功能特性

1.2 在线鉴权

在线鉴权,是指用户的客户端访问 ZegoEffects 服务端,申请鉴权文件,进行网络验证的方式。从客户的角度来看可以通过在线鉴权快速,安全的通过网络验证,相比离线鉴权更可控更高效。

只有通过在线鉴权的客户端,才可以使用 ZegoEffects SDK 的 AI 功能。

2 鉴权实现原理

下图展示了客户端进行在线鉴权的基本流程:

/Pics/ZegoEffects/getAuthorizedMessage_iOS_Android.png

3 实现在线鉴权

3.1 前提条件

开始实现鉴权之前,请先联系 ZEGO 商务人员,申请在线鉴权所需的 AppID 和 AppSign。

3.2 实现流程

1. 客户端向 ZegoEffects SDK 申请授权。

客户端调用 getAuthInfo 接口,传入申请到的 AppSign,获取授权信息。

String encryptInfo = ZegoEffects.getAuthInfo(AppSign,context);

2. 客户端向 ZegoEffects 服务端请求鉴权文件。

客户端拿到 ZegoEffects SDK 返回的授权信息后,构造消息体,发送请求到 ZEGO 服务端,申请鉴权文件。消息体结构如下:

  • URL: https://aieffects-api.zego.im?Action=DescribeEffectsLicense&AppId=xxxxxxxx&AuthInfo=xxxxxxxx

  • 请求方法: GET

  • 内容格式: JSON

  • 参数:

    参数名 类型 是否必须 说明
    AppId unsigned int 鉴权的唯一标识,请联系 ZEGO 商务人员获取。
    AuthInfo string 加密数据,由 SDK 产生的设备相关标识,通过 getAuthInfo 接口获得。
  • 消息示例:

    curl -X GET --data https://aieffects-api.zego.im?Action=DescribeEffectsLicense&AppId=xxxxxxxx&AuthInfo=xxxxxxxx

3. ZEGO 服务端返回鉴权文件的相应消息。

服务端返回的消息示例如下:

{
    "Code": 0,
    "Message": <message>,
    "Data": {
        "License": <license>
    }
}
  • 如果请求获取鉴权文件成功,则返回字段 License 中携带信息即为鉴权文件的内容。
  • 若请求失败,则返回字段 Code 会返回错误码,Message 为对应的错误信息。

返回的字段解释如下:

参数名 类型 说明
Code unsigned int32

返回的错误码,取值如下:

  • 0:成功。
  • 1:参数有误。
  • 2:授权信息有误。
  • 3:证书无效,AppId 或者 Package name 不正确。
  • 4:服务内部问题。
Message string

返回的提示信息,和 “Code” 的取值相对应。

  • 0:Success
  • 1:Invalid argument
  • 2:Invalid token
  • 3:No valid license
  • 4:Service unavailable
Data object “Code” 为 0 时,返回鉴权文件的内容。

其中,返回字段 Data

参数名 类型 说明
License string 鉴权文件的内容。

4. 在 SDK 中传入鉴权文件。

将获取的鉴权文件设置到 SDK 中,以激活相关功能模块。

开发者需要从返回字段 “Data” 的 “License” 字段中获取鉴权文件内容,然后调用 create 接口,并将鉴权文件传给 ZegoEffects SDK,创建 Effects 对象。

// 创建 Effects 对象前,请先调用 setResources 接口导入资源和模型
// 传入鉴权文件,创建 Effects 对象
String license = "xxxxxxx";
ZegoEffects mEffects = ZegoEffects.create(license, applicationContext);

在调用 create 接口创建 Effects 对象之前,需要先调用 setResources 接口导入资源和模型。

相关文档

客户端在线鉴权,通过 URL 地址访问到 ZegoEffects 服务端时,为什么有时会出现失败?