概述

行为验证 Node SDK目前提供基于Node框架的demo。

开发环境

条目
兼容性 Node 4+
依赖 request, express, body-parser, supervisor, express-session

资源导航

条目
产品结构流程 通讯流程
SDK项目地址 gt3-node-sdk
NPM安装 npm install gt3-sdk

安装 Node SDK

本SDK,可以直接从GitHub上下载,然后引入目录中的gt-sdk.js文件,更推荐的方式是通过 npm 包管理器来安装 npm install gt3-sdk

下载SDK

使用命令从Github导入完整项目

git clone https://github.com/GeeTeam/gt3-node-sdk.git

手动下载压缩包文件

gt3-node-sdk下载.zip文件

引入SDK

在 Node 项目中,通过 npm install gt3-sdk --save 安装该 SDK。然后通过以下方式引入:

var Geetest = require('gt3-sdk');

配置密钥,修改请求参数

配置密钥

极验管理后台获取您的公钥(id)和私钥(key), 并在代码中配置。配置文件路径如下:

/demo/static/click.js
/demo/static/fullpage.js
/demo/static/slide.js

修改请求参数(可选)

名称 说明
user_id 用户标识,若担心用户信息风险,可作预处理(如哈希处理)再提供
client_type 客户端类型,web(pc浏览器),h5(手机浏览器,包括webview),native(原生app),unknown(未知)
ip_address 客户端请求您服务器的ip地址,unknow表示未知

接口示例

以下代码以click点击大图情况为例

初始化(API1),获取流水标识并设置状态码

var click = require('./static/click');
app.get("/gt/register-click", function (req, res) {

// 向极验申请每次验证所需的challenge
click.register(null, function (err, data) {
if (err) {
console.error(err);
res.status(500);
res.send(err);
return;
}

if (!data.success) {
// 进入 failback,如果一直进入此模式,请检查服务器到极验服务器是否可访问
apirefer

// 为以防万一,你可以选择以下两种方式之一:

// 1. 继续使用极验提供的failback备用方案
req.session.fallback = true;
res.send(data);

// 2. 使用自己提供的备用方案
// todo
} else {
// 正常模式
req.session.fallback = false;
res.send(data);
}
});
});

注意:初始化结果标识status(status=1表示初始化成功,status=0表示宕机状态)需要用户保存,在后续二次验证时会取出并进行逻辑判断。本SDK demo中使用session来存取status。

二次验证(API2),包括正常流程和宕机情况

app.post("/gt/validate-click", function (req, res) {
// 对ajax提供的验证凭证进行二次验证
click.validate(req.session.fallback, {
geetest_challenge: req.body.geetest_challenge,
geetest_validate: req.body.geetest_validate,
geetest_seccode: req.body.geetest_seccode
}, function (err, success) {
if (err) {
// 网络错误
res.send({
status: "error",
info: err
});

} else if (!success) {
// 二次验证失败
res.send({
status: "fail",
info: '登录失败'
});
} else {
res.send({
status: "success",
info: '登录成功'
});
}
});
});

注意:当取出status=0时表示极验宕机,此时流程进入failback模式,后续逻辑都是在您的服务器完成,不会再向极验服务器发送网络请求。本SDK demo中,对于failback模式,只对请求参数做了简单的校验,您也可以自行设计。

运行demo

通过 npm install 安装好依赖后,在SDK根目录下运行 npm start

在浏览器中访问http://localhost:9977即可看到demo界面。

二次验证不通过处理方式

  1. sdk内部逻辑问题,检查读取session是否正常,代码是否走到向极验发送请求的部分,检查极验响应的返回值。
  2. 重复提交问题,该向极验发起的二次验证接口只能生效一次。
  3. challenge不一致,要保证challenge在整个流程的一致性,可能客户自己修改代码导致逻辑混乱使得challenge和此次流程未一一对应。
  4. 检查sdk中gt和key是否正确,参照demo要保证传参的正确性。
  5. 客户可提供challenge给极验助手,查询日志(是否收到二次验证请求,响应结果,异常原因等)