云 信 手 机 认 证 引 擎 开 发 指 南 (Android) V3.0 云 信 事 业 部 飞 天 诚 信 科 技 股 份 有 限 公 司 www.cloudentify.com
章 节 目 录 第 1 章 接 口 调 用... 1 1.1 基 本 业 务 接 口... 1 1.1.1 初 始 化... 1 1.1.2 手 机 令 牌 激 活... 1 1.1.3 产 生 动 态 口 令... 1 1.1.4 手 机 令 牌 删 除... 2 1.1.5 时 间 同 步... 2 1.1.6 推 送 设 置... 2 1.1.7 反 初 始 化... 3 1.2 脸 谱 令 集 成 接 口... 3 1.2.1 初 始 化... 3 1.2.2 人 脸 注 册... 3 1.2.3 反 初 始 化... 4 第 2 章 错 误 码... 5 第 3 章 SDK 接 入 步 骤... 6 ii
第 1 章 接 口 调 用 1.1 基 本 业 务 接 口 1.1.1 初 始 化 YunxinSDK otpinit(context context); : context Activity 中 的 Context 对 象 静 态 方 法, 返 回 sdk 实 例 1.1.2 手 机 令 牌 激 活 接 口 功 能 : 手 机 令 牌 激 活, 生 成 一 支 可 用 于 口 令 生 成 认 证 的 令 牌 String onlineactivate(string activedata); : activatedata 在 线 激 活 二 维 码 中 的 原 始 数 据 格 式 :cloud://***.cloudentify.com:1851/01/***** 客 户 调 用 手 机 令 牌 激 活 接 口, 需 要 传 入 激 活 URL, 该 URL 产 生 的 两 种 方 式 : 1 通 过 云 信 SDK(Java C PHP.Net 等 ) 接 口 获 取 到 URL, 以 二 维 码 的 方 式 显 示, 手 机 APP 扫 码, 得 到 激 活 URL, 传 入 激 活 接 口 ; 2 通 过 云 信 SDK(Java C PHP.Net 等 ) 接 口 获 取 到 URL, 直 接 传 入 激 活 接 口 返 回 结 果 :JSON 格 式 字 符 串,result=0 为 激 活 成 功, 其 他 为 激 活 失 败 {"token":" 令 牌 号 ","result":" 返 回 码 ","message":" 结 果 描 述 "} 激 活 成 功 后 返 回 一 个 令 牌 号, 需 要 上 层 调 用 者 与 用 户 绑 定 对 应 关 系 或 者 直 接 存 储, 当 获 取 动 态 口 令 时, 需 要 传 递 令 牌 号 1.1.3 产 生 动 态 口 令 接 口 功 能 : 生 成 用 于 认 证 使 用 的 动 态 口 令 1
String getotp(string token); : token 手 机 令 牌 号 返 回 结 果 :JSON 格 式 字 符 串,result=0 为 获 取 成 功, 其 他 为 获 取 失 败 ; {"otp":" 动 态 口 令 ","result":" 返 回 码 ","message":" 结 果 描 述 "} 1.1.4 手 机 令 牌 删 除 接 口 功 能 : 删 除 令 牌 String deletetoken(string token) : token 手 机 令 牌 号 返 回 结 果 :JSON 格 式 字 符 串,result=0 为 删 除 成 功, 其 他 为 删 除 失 败 ; {"result":" 返 回 码 ","message":" 结 果 描 述 "} 1.1.5 时 间 同 步 接 口 功 能 : 校 准 生 成 OTP 使 用 的 内 部 时 钟 当 客 户 端 本 地 时 间 更 改 时, 为 防 止 产 生 的 OTP 不 正 确, 需 要 获 取 服 务 器 的 时 间 进 行 校 准 该 接 口 不 会 修 改 手 机 的 时 间 String timesync() 返 回 结 果 :JSON 格 式 字 符 串,result=0 为 同 步 成 功, 其 他 为 同 步 失 败 ; {"result":" 返 回 码 ","message":" 结 果 描 述 "} 1.1.6 推 送 设 置 接 口 功 能 : 推 送 设 置, 供 用 户 选 择 使 用 自 定 义 的 授 权 页 面 还 是 云 信 SDK 默 认 的 授 权 页 面 void setpushactivity(class activity); 2
: activity 自 定 义 的 用 于 展 示 推 送 页 面 的 Activity 调 用 该 接 口 设 置 推 送 登 录 的 页 面, 如 果 不 调 用 或 传 递 的 为 null, 则 推 送 认 证 时 显 示 云 信 SDK 默 认 的 授 权 页 面 如 果 调 用, 则 需 要 传 入 自 定 义 页 面 对 应 的 Activity, 如 AuthActivity.class 如 果 你 使 用 自 定 义 的 推 送 授 权 页 面, 需 要 使 用 以 下 方 法 进 行 认 证 : PushAuthAction action = new PushAuthAction(this, intent); 允 许 时 调 用 action.accept(); 拒 绝 :action.refuse(); 1.1.7 反 初 始 化 void otpuninit 接 口 功 能 : 释 放 使 用 的 数 据 库 和 配 置 文 件 1.2 脸 谱 令 集 成 接 口 1.2.1 初 始 化 FaceSDK faceinit(context context, int isauthorize); : context Activity 中 的 Context 对 象 isauthorize 人 脸 识 别 之 前 是 否 需 要 授 权 许 可 页 面,0: 不 需 要,1: 需 要, 默 认 0 静 态 方 法, 返 回 SDK 实 例 1.2.2 人 脸 注 册 接 口 功 能 : 人 脸 注 册, 采 集 人 脸 图 像 上 传 到 云 信 服 务 器, 进 行 存 储, 用 于 人 脸 识 别 的 比 对 int faceregist(context context, String activatedata); 3
context activatedata 调 用 Activity 的 Context 对 象 人 脸 注 册 的 二 维 码 中 的 原 始 数 据 格 式 :cloud://***.cloudentify.com:1851/03/***** 和 1.1.2 手 机 令 牌 激 活 接 口 一 样,activateData 也 是 需 要 客 户 先 调 用 云 信 SDK 接 口 获 取 到, 然 后 给 该 接 口 传 入 URL 进 行 人 脸 注 册 调 用 该 接 口 后,YunxinSDK 会 打 开 一 个 图 像 采 集 页 面, 打 开 前 置 摄 像 头 进 行 人 脸 检 测, 所 以 需 要 Camera 相 关 权 限 注 册 成 功 后, 也 会 返 回 一 个 令 牌 号, 需 要 调 用 者 维 护 与 用 户 的 绑 定 关 系 返 回 结 果 :result=0 为 注 册 成 功, 其 他 为 注 册 失 败 {token: " 脸 谱 令 牌 号 ","result":" 返 回 码 ","message":" 结 果 描 述 " } 1.2.3 反 初 始 化 int faceuninit(); 4
第 2 章 错 误 码 1-12 服 务 器 返 回 的 错 误 码 21-30 公 用 的 错 误 码 信 息 31-40 在 线 激 活 业 务 错 误 码 41-50 人 脸 识 别 相 关 错 误 码 错 误 码 0 成 功 1 服 务 器 数 据 校 验 失 败 2 服 务 器 数 据 解 密 失 败 3 服 务 器 处 理 失 败 4 服 务 器 处 理 失 败 5 请 求 已 过 期 6 令 牌 不 存 在 7 激 活 数 据 已 失 效 8 用 户 不 存 在 9 无 效 请 求 数 据 10 所 属 企 业 不 匹 配 11 用 户 账 号 不 匹 配 12 不 支 持 管 理 员 扫 码 登 录 21 没 有 可 用 的 网 络 连 接, 请 设 置 网 络 22 连 接 服 务 器 失 败, 请 确 认 网 络 正 常 23 服 务 器 响 应 超 时, 请 重 试 24 调 用 错 误 25 本 地 不 存 在 此 令 牌 26 同 步 时 间 错 误 31 激 活 数 据 格 式 不 正 确 32 激 活 失 败 33 响 应 超 时 41 用 户 取 消 激 活 42 人 脸 激 活 数 据 格 式 不 正 确 43 其 它 待 扩 展 5
第 3 章 SDK 接 入 步 骤 1 将 yunxin.jar 复 制 到 libs 目 录 下, 并 加 入 build path 如 果 需 要 使 用 人 脸 识 别 相 关 的 功 能, 还 需 要 使 用 以 下 文 件 : opencv_library.jar, 复 制 到 libs 目 录 下 LibFaceSDK.so,libopencv_java.so, 复 制 到 /libs/armeabi 目 录 下 2 在 AndroidManifest.xml 文 件 中 的 配 置 : 权 限 : <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.write_external_storage" /> <uses-permission android:name="android.permission.read_phone_state" /> <uses-permission android:name="android.permission.access_network_state" /> 如 果 要 使 用 人 脸 识 别 相 关 功 能, 还 需 要 添 加 相 机 权 限 : <uses-permission android:name="android.permission.camera" /> Activity: <!-- 默 认 的 推 送 认 证 页 面, 如 果 你 使 用 自 定 的 页 面, 可 以 不 添 加 这 个 Activity --> <activity android:name="com.ft.cloud.push.authactivity" android:label="@string/app_name" android:launchmode="singletask" android:excludefromrecents="true" android:theme="@android:style/theme.translucent.notitlebar" > </activity> <! 注 册 脸 谱 令 牌 的 Activity, 如 果 不 使 用 脸 谱 令 牌, 可 以 不 添 加 这 个 Activity --> <activity android:name="com.ft.cloud.push.faceactivity" android:launchmode="singleinstance" android:theme="@android:style/theme.translucent.notitlebar" > </activity> <! 人 脸 识 别 认 证 的 Activity, 如 果 不 使 用 人 脸 认 证, 可 以 不 添 加 这 个 Activity --> 6
<activity android:name="com.ft.cloud.push.faceauthactivity" android:launchmode="singleinstance" android:theme="@android:style/theme.translucent.notitlebar" > </activity> Service: <! 云 信 推 送 服 务 --> <service android:enabled="true" android:exported="false" android:name="com.ft.cloud.push.pushservice" android:label=" 云 信 SDK 推 送 服 务 "> <intent-filter> <action android:name="com.ft.cloud.push.pushservice" /> </intent-filter> </service> BroadcastReceiver: <! 接 收 系 统 网 络 变 化 的 Receiver, 触 发 推 送 服 务 自 启, 增 加 推 送 成 功 率 --> <receiver android:name="com.ft.cloud.push.networkchangedreceiver" > <intent-filter> <action android:name="android.net.conn.connectivity_change"/> <category android:name="android.intent.category.default" /> </intent-filter> </receiver> <! 接 收 开 机 启 动 的 Receiver, 触 发 推 送 服 务 自 启, 增 加 推 送 成 功 率 --> <receiver android:name="com.ft.cloud.push.bootreceiver"> <intent-filter> <action android:name="android.intent.action.boot_completed"/> <category android:name="android.intent.category.default" /> </intent-filter> </receiver> 3 在 APP 的 主 Activity 中 初 始 化 即 可 YunxinSDK.otpInit(this) 4 注 意 事 项 : 如 果 你 使 用 代 码 混 淆, 需 要 添 加 以 下 例 外 : -keep class org.opencv.**{ *; } -libraryjars libs/yunxin.jar 7
8