目前发布的是用 PHP 编写的程序
* php 版本需要 Ver.7.4 或更高,建议使用 Ver.8.3 或更高。
在引入 Qypher 之前,请确认以下是否可行
必须能够通过 https 访问进行响应 (http://不允许)
Qypher API 会在内部加密通信内容,但为了更高的安全性,仅在支持 https 通信的环境中提供。
Qypher API 使用 OpenSSL 加密库。
Qypher API 使用 JavaScript 进行显示、二维码解析以及与 Qypher 核心的通信。
Qypher API 会将其分析的数据发送到外部域 (https://qypher.be-on.biz) 的 Qypher,并接收与 Qypher 数据比对后的结果。
必须能够使用 input type="file" 和 canvas 元素进行 DOM 操作
Qypher API 使用 DOM 操作用于上传 Qypher卡、解析二维码和操作按钮。
Qypher API 会在登录前和登录后的 HTML 中嵌入自定义元素。
Qypher API 需要安装包含密钥的 PHP 文件。此文件负责与 Qypher 的通信加密和解密、一次性密钥验证等重要任务。
确认以上内容后,请继续进行设置。
请先登录 Qypher。
* 登录方法在“如何使用Qypher”中说明。
点击 个人信息 的 Qypher 集成,集成详情。
目标网站名称 :
请输入将实施 Qypher 的网站的正式名称。
首页的网址 :
请输入网站的着陆页或索引页地址,以 https 开头。
沙盒 :
选择 “沙盒” 时,正式环境的登录界面会显示 “调整中”,无法登录。完成各种测试后,选择 “生产环境”,然后点击 “更新”。
注册人数 :
这是通过 Qypher 登录您注册的网站的用户数。即使同一用户多次登录,也只计数一次。
需要家长许可的年龄 :
设置需要父母同意的年龄。如果不需要,请选择“无限制”。
可浏览的年龄 :
对于有年龄限制的网站,请设置年龄。如果不需要,请选择“无限制”。
使用语言 :
未来,当创建实现 Qypher 的网站列表时,将提供按可用语言分类的部分。然而,如果浏览器自动翻译功能继续发展,本栏可能会变得不再需要。
希望获取的数据 :
请选择您希望从 Qypher 获取的用户数据。可获取的数据取决于您的套餐。请检查 “套餐列表”。
使用条款的网址 :
请输入 使用条款 的 URL,以 https 开头。
隐私政策的网址 :
请输入 隐私政策 的 URL,以 https 开头。
登录后的网址 :
请输入登录后显示的页面地址,适用于 沙盒 和生产环境,均需以 https 开头。
Webhook的网址 :
请输入接收 webhook 信息的 URL,适用于 沙盒 和生产环境,均需以 https 开头。如果不使用,可以留空。Webhook 在 Pro 套餐及更高版本中可用。
放置 API 密钥的文件夹 :
点击“下载 API 套件(ZIP)”时,Qypher 会生成 “密钥文件”。请输入要放置此 “密钥文件” 的文件夹,请从 https 开始。
API 密钥的语言类型 :
目前仅提供 PHP,但计划支持其他语言。届时,您可以在此选择所需的语言。
使用方案 :
请选择您的套餐。详情请阅读 套餐列表。
请将登录页面、API密钥,使用条款,隐私政策,Webhook 和登录后的页面放在同一域名下,如果使用子域,请放在同一子域下。
对于拥有 Pro 套餐或更高并实施多个网站的用户,请在 “下载 API 套件(ZIP)” 下拉菜单中选择要编辑的网站。
设置完成后,让我们下载吧。
点击“下载 API 套件(ZIP)”时,一个名为 “QypherAPIset_(网站名).zip” 的压缩文件将下载到您的下载文件夹。请双击它或以类似方式解压(打开)。
文件结构
QypherAPIset_(网站名称)/
├─ apiScript.txt ← 请将此内容复制并粘贴到登录页面的任意位置。
├─ 由50个或更多随机字母数字组成的公钥(1).php ← 用于处理密钥的 PHP 文件 (下文称为“私钥文件”。)
├─ getData.php ← 请将此内容复制并粘贴到登录后显示的页面中。
├─ README.txt ← 用户手册
└─ Sandbox/
├─ Sandbox_apiScript.txt ← ( 沙盒用 ) 请将此内容复制并粘贴到登录页面的任意位置。
├─ Sandbox_由50个或更多随机字母数字组成的公钥(2).php ← ( 沙盒用 ) 密钥文件
├─ Sandbox_getData.php ← ( 沙盒用 ) 请将此内容复制并粘贴到登录后显示的页面中。
├─ nine.jpg ← 沙盒 Qypher卡 9 岁测试用户 (可以测试需要监护人批准的操作。)
├─ eleven.jpg ← 沙盒 Qypher卡 11 岁测试用户 (可用于检查监护人批准的年龄边界。)
├─ thirty.jpg ← 沙盒 Qypher卡 30 岁测试用户 (可以作为成年人正常登录。)
└─ guardian.jpg ← 沙盒 Qypher卡 测试用户(9岁和11岁儿童的监护人) (用于测试监护人批准流程。)
让我们在 沙盒 中试试
在 沙盒 中,您可以进行与 Qypher 登录相关的各种实验和体验。
从 沙盒 登录时,所有操作都仅限于 沙盒 内部,不会反映到 生产环境。
沙盒 内的电子邮件仅发送给使用 沙盒 的用户。
- 请复制 Sandbox_apiScript.txt 中的全部内容,并粘贴到 沙盒用 登录页面的任意位置。
将需要传递的数据写入 <input type="hidden" id="QypherAnyKey" value=""> 的 value 属性后,可在登录后继续使用这些数据。
( 如果输入的内容包含 HTML 标签、JavaScript 代码、文件路径等,将会被自动作废。如果检测到有害的 value,可能会无法使用 Qypher。 )
- 请将 沙盒 用 密钥文件 放置在 Qypher集成详情 中 放置 API 密钥的文件夹 设置的位置。
请将其放置在与 生产环境用 相同的位置。 请勿以任何方式修改此文件。如果被篡改,可能会被 Qypher 核心系统判定为无效,并拒绝登录请求。
请勿更改文件名。Qypher 将无法识别此文件。
上传后,请确认文件权限设置正确。
推荐 604或者644
*如果您使用的是 Windows 服务器,则不需要上述的“604 / 644”权限设置,但请确保文件可被 Web 服务器(如 IIS)正确访问。
- 请复制 Sandbox_getData.txt 中的全部内容,并作为 沙盒用 登录后页面的主要结构使用。
请在 if($Qypher["success"]){} 中填写登录成功后的内容,在 else{} 中填写登录失败时的内容。
登录成功时的默认值包含 “重新加载此页面将需要重新登录。”。
登录后页面中粘贴的 PHP 程序会调用 密钥文件 并对该数据进行解密。
此时,将加密的登录时间戳作为一次性密码进行验证。如果该时间戳相差超过 5 秒,登录将被拒绝。
这是防止用户登出后他人返回登录页面并刷新后仍能登录的一项重要措施。
对 密钥文件 内部做任何更改都可能产生安全漏洞,因此在任何情况下都请勿修改。
让我们从 Qypher 获取用户数据
可以在 $Qypher 数组中获取。
$Qypher["success"] ← true = 登录成功,false = 登录失败
$Qypher["uuid"] ← 用于登录记录的 Qypher 标识符 ( 联系客服 Qypher 时使用 )
$Qypher["Qypher_ID"] ← 用户的唯一编号 ( 用于识别是哪个用户登录 )
$Qypher["login_time(UTC)"] ← YYYY-MM-DDThh:ii:ssZ ( 登录时间以世界标准时间 (UTC) 提供 )
$Qypher["meetsAgeReq"] ← "用户是否满足该网站设定的年龄条件"的结果(1=满足 / 0=不满足)。登录成功时通常为 1。真实年龄与出生日期一律不发送。
$Qypher["ageReq"] ← 该网站设定的年龄阈值(0=未设定)
$Qypher["guardianApproved"] ← 用户实际年龄是否低于监护人确认阈值——needGuardian 值(未设定则为 13 岁;未满 13 岁无论如何设定都始终适用)(1/0)。Qypher 在未获监护人同意时不会完成登录,因此 1 表示在该同意下登录的年少用户
$Qypher["under10"] ← 是否未满 10 岁的粗略标志(1/0),用于切换为面向儿童的措辞或版式。不发送真实年龄与出生日期;仅在 10 岁这一边界变化一次,因此反复登录也无法推算出生日。
$Qypher["under13"] ← 是否未满 13 岁的粗略标志(1/0)。与 under10 一样,可在不接收真实年龄的情况下按年龄段切换措辞;仅在 13 岁这一边界变化一次。
$Qypher["QypherAnyKey"] ← 希望从登录页面传递的数据 ( 这是写入 apiScript.txt 中 id="QypherAnyKey" 的 value 属性的数据。 )
$Qypher["json"] ← 所有数据的 JSON 格式 ( 用于 JavaScript 等处理 )
默认情况下,Qypher 提供的数据包括上述内容。在 Qypher集成详情 的 希望获取的数据 中勾选各项内容,会增加传递的数据量。但用户未授权或未登记的数据将为空。
$Qypher["surname"] ← 姓
$Qypher["givenName"] ← 名字
$Qypher["nickname"] ← 昵称
$Qypher["email"] ← 电子邮件地址
$Qypher["birthday"] ← 出生日期
$Qypher["postalCode"] ← 邮政编码
$Qypher["country"] ← 国家 / 地区
$Qypher["area1"] ← 州 / 省 / 区
$Qypher["area2"] ← 市 / 镇 / 村
$Qypher["address"] ← 街道和门牌号
$Qypher["building"] ← 建筑名称
$Qypher["room"] ← 房间名称
例如: echo `您好 {$Qypher["surname"]} {$Qypher["givenName"]}, 欢迎使用 Qypher。`;
请务必谨慎处理个人信息。
让我们准备好 生产环境
在 生产环境 中,公钥和私钥与 沙盒 中使用的不同。仅仅复制 沙盒 的内容并不能让 生产环境 工作。
按照与 沙盒 相同的步骤设置 生产环境。
- 请复制 apiScript.txt 中的全部内容,并粘贴到 生产环境用 登录页面的任意位置。
将需要传递的数据写入 <input type="hidden" id="QypherAnyKey" value=""> 的 value 属性后,可在登录后继续使用这些数据。
( 如果输入的内容包含 HTML 标签、JavaScript 代码、文件路径等,将会被自动作废。如果检测到有害的 value,可能会无法使用 Qypher。 )
- 请将 生产环境 用 密钥文件 放置在 Qypher集成详情 中 放置 API 密钥的文件夹 设置的位置。
请将其放置在与 沙盒用 相同的位置。 请勿以任何方式修改此文件。如果被篡改,可能会被 Qypher 核心系统判定为无效,并拒绝登录请求。
请勿更改文件名。Qypher 将无法识别此文件。
上传后,请确认文件权限设置正确。
推荐 604或者644
*如果您使用的是 Windows 服务器,则不需要上述的“604 / 644”权限设置,但请确保文件可被 Web 服务器(如 IIS)正确访问。
- 请复制 getData.txt 中的全部内容,并作为 生产环境用 登录后页面的主要结构使用。
请在 if($Qypher["success"]){} 中填写登录成功后的内容,在 else{} 中填写登录失败时的内容。
登录成功时的默认值包含 “重新加载此页面将需要重新登录。”。
- 登录 Qypher,将 Qypher 集成详情 中的 沙盒 设置为 生产环境,然后点击 更新。
如果登录页面显示 “正在确认安装位置”,请检查是否误用了 沙盒 版本,或者如果您在多个页面上使用 Qypher,请确保使用的是该网站对应的正确版本。
使用 Webhook 来确保信息的可靠性。
Webhook 可用于 Pro 及以上套餐。用户登录后,如果信息未能正确处理,请使用 Webhook。
对于 Pro 及以上套餐用户,下载 API 时文件夹中会包含两个文件:webhook.php 和 Sandbox_webhook.php。请在此基础上直接添加所需内容后使用。
数据获取方式与登录后页面中使用的方法相同。
请将文件放置的位置填写到 Qypher 集成详情 的 Webhook 中,以 https 开头,然后点击 更新。
如果不使用 Webhook,请将 Qypher 集成详情 的 Webhook 留空,然后点击 更新。