服务端部署

SDK简介

onepass服务端SDK包含网关校验和短信验证码校验两个部分,分别是对onepass两个云服务接口http://onepass.geetest.com/check_gateway.phphttp://onepass.geetest.com/check_message.php
网络请求的封装,封装后以函数方法的形式供客户集成时调用,从而完成自定义接口的开发。

onepass包含test-button部分,请完成test-button的集成后,再开始网关和短信的集成。

开发准备

下载SDK

Python SDK github项目地址

Python SDK zip文件下载

SDK安装

获取到SDK源码后,执行如下命令安装

cd gop-python-sdk
python setup.py install

config配置

// 请到onepass后台申请可用的id与key
onepass_id=7591d0fxxxxxxxxxxxxxxxxx748d936b
onepass_key=52ad901xxxxxxxxxxxxxxxxx02f20b23

SDK初始化

from sdk import GMessageLib
gm = GMessageLib(onepass_id, onepass_key)

方法说明

网关校验

  • 方法:

    check_gateway(self, process_id, accesscode, phone, user_id=None,callback=None)

  • 功能:

    向onepass云服务发送请求,校验当前输入的手机号码与客户端网关请求时的本机号码是否一致

  • 参数说明
参数名称 参数类型 参数来源 是否必填 描述
phone String 客户端传回 用户输入的手机号
process_id String 客户端传回 本次网关校验事件的流水号
accesscode String 客户端传回 运营商为本次网关校验事件分配的token
  • 返回值
返回值类型 取值 描述
int 0 或 1 0:输入的手机号码与本机号码一致;1:输入的手机号码与本机号码不一致
  • 示例
class CheckGatewayHandler(SessionBaseHandler):
def post(self):
gm = GMessageLib(onepass_id, onepass_key)
process_id = self.get_argument("process_id", "")
accesscode = self.get_argument("accesscode", "")
phone = self.get_argument("phone", "")
user_id = "test"
result = gm.check_gateway(process_id, accesscode, phone, user_id=user_id)
result = 0 if result else 1
output = {"result":result,"content":"demo"}
self.write(output)

短信验证码校验

  • 方法:

    check_message(self, process_id, message_id, message_number,phone, user_id=None,callback=None)

  • 功能:

    向onepass云服务发送请求,校验当前输入的验证码与用户收到的验证码是否一致

  • 参数说明
参数名称 参数类型 参数来源 是否必填 描述
phone String 客户端传回 用户输入的手机号
process_id String 客户端传回 本次验证码校验事件的流水号
message_id String 客户端传回 从客户端获取到的短信唯一编号
message_number String 客户端传回 从客户端获取到的短信验证码
  • 返回值
返回值类型 取值 描述
int 0 或 1 0:输入的验证码正确;1:输入的验证码错误
  • 示例
class CheckMessageHandler(SessionBaseHandler):
def post(self):
gm = GMessageLib(onepass_id, onepass_key)
process_id = self.get_argument("process_id", "")
message_id = self.get_argument("message_id", "")
message_number = self.get_argument("message_number", "")
phone = self.get_argument("phone", "")
user_id = "test"
result = gm.check_message(process_id, message_id,message_number, phone, user_id=user_id)
result = 0 if result else 1
output = {"result":result,"content":"demo"}
self.write(output)

FAQ

  1. 为什么需要接入服务端SDK?

    用户的客户端在完成了包括验证码在内的一系列通信之后,会从onepass云服务拿到token作为其唯一许可证,然后将token发送到客户端服务端,客户的服务器端使用该token向onepass云服务器查询网关或者短信验证码的验证结果,完成相关业务处理,然后通知客户端执行交互动作,这种告知客户服务端校验结果的方式既方便又安全,SDK内部含私钥校验合法性的安全逻辑,可以防篡。

  2. onepass与test-button

    test-button即极验验证码,属于onepass的一个部分,充当网关验证和短信验证码验证的前置步骤,完成人机验证,防止网关和短信被恶意请求,消耗客户的网关和短信请求量。因此在onepass接入时,请优先完成对test-button的接入。