golang VerifID身份验证API客户端插件库vl-go的使用
golang VerifID身份验证API客户端插件库vl-go的使用
概述
vlgo是一个围绕VerifID身份验证层API的Go HTTP客户端库。它完整封装了验证层所有可用的端点,使用这个客户端和API足以验证某人的身份。
功能特性
- VerifID
vl
REST API:- 用户(User)
- 图片(Image)
安装
go get github.com/verifid/vl-go/vlgo
使用示例
REST API
vlgo
包提供了一个Client
用于访问VerifID验证层API。您需要遵循4个基本步骤来验证一个人及其身份。
用户验证步骤:
- 发送用户的个人数据
- 上传身份证或护照照片
- 上传个人资料照片
- 调用验证用户
以下是完整的示例代码:
import (
"fmt"
"net/http"
"path"
"time"
"github.com/verifid/vl-go/vlgo"
)
var httpClient = &http.Client{
Timeout: time.Second * 15,
}
func main() {
// 1. 发送用户数据
user := vlgo.User{
Country: "United States",
DateOfBirth: "10.04.1980",
Name: "Tony",
Surname: "Stark"}
userClient := vlgo.NewUserService(httpClient)
userResponse, resp, err := userClient.User.SendUserData(user)
if err != nil {
fmt.Println("发送用户数据错误:", err)
return
}
fmt.Println("用户数据响应:", userResponse)
// 2. 上传身份证图片
imageClient := vlgo.NewImageService(httpClient)
identityImagePath := path.Dir("/resources/2.png")
base64Str := imageClient.Image.ImageFileToBase64(identityImagePath)
imageUpload := vlgo.ImageUpload{Image: base64Str, UserID: "userId"}
uploadResponse, resp, err := imageClient.Image.UploadIdentity(imageUpload)
if err != nil {
fmt.Println("上传身份证图片错误:", err)
return
}
fmt.Println("身份证上传响应:", uploadResponse)
// 3. 上传个人资料照片
profileImagePath := path.Dir("/resources/2.png")
base64Str = imageClient.Image.ImageFileToBase64(profileImagePath)
imageUpload = vlgo.ImageUpload{Image: base64Str, UserID: "userId"}
uploadResponse, resp, err = imageClient.Image.UploadProfile(imageUpload)
if err != nil {
fmt.Println("上传个人资料照片错误:", err)
return
}
fmt.Println("个人资料照片上传响应:", uploadResponse)
// 4. 验证用户
verifyUser := vlgo.VerifyUser{
UserID: "userId",
Language: "en_core_web_sm"}
userVerificationResponse, httResponse, err := userClient.User.VerifyUser(verifyUser)
if err != nil {
fmt.Println("验证用户错误:", err)
return
}
fmt.Println("用户验证响应:", userVerificationResponse)
}
代码说明
- 初始化HTTP客户端:设置了15秒的超时时间
- 创建用户服务:使用
NewUserService
创建用户服务客户端 - 发送用户数据:通过
SendUserData
方法发送用户的基本信息 - 创建图片服务:使用
NewImageService
创建图片服务客户端 - 上传身份证图片:
- 将图片文件转换为Base64字符串
- 通过
UploadIdentity
方法上传身份证图片
- 上传个人资料照片:
- 同样将图片转换为Base64
- 通过
UploadProfile
方法上传
- 验证用户:最后通过
VerifyUser
方法完成用户验证
每个方法都返回响应对象、HTTP响应和可能的错误,建议对每个操作都进行错误检查。
更多关于golang VerifID身份验证API客户端插件库vl-go的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang VerifID身份验证API客户端插件库vl-go的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Golang VerifID身份验证API客户端插件库vl-go使用指南
vl-go是一个用于VerifID身份验证服务的Golang客户端库,它简化了与VerifID API的交互过程。下面我将详细介绍如何使用这个库。
安装
首先,你需要安装vl-go库:
go get github.com/verifid/vl-go
基本使用
1. 初始化客户端
package main
import (
"fmt"
"log"
"github.com/verifid/vl-go"
)
func main() {
// 初始化客户端
client := vl.NewClient(
"your-api-key", // 替换为你的API密钥
"your-api-secret", // 替换为你的API密钥
vl.WithEnvironment(vl.Sandbox), // 使用沙盒环境
)
// 或者使用生产环境
// client := vl.NewClient("your-api-key", "your-api-secret", vl.WithEnvironment(vl.Production))
}
2. 身份验证请求
func verifyIdentity(client *vl.Client) {
// 创建验证请求
request := &vl.IdentityVerificationRequest{
FirstName: "John",
LastName: "Doe",
DateOfBirth: "1980-01-01",
Address: vl.Address{
Street1: "123 Main St",
City: "New York",
State: "NY",
PostalCode: "10001",
Country: "US",
},
Document: vl.Document{
Type: "DRIVERS_LICENSE",
Number: "DL12345678",
IssuingState: "NY",
ExpiryDate: "2025-12-31",
},
}
// 发送验证请求
response, err := client.VerifyIdentity(request)
if err != nil {
log.Fatalf("验证失败: %v", err)
}
// 处理响应
fmt.Printf("验证结果: %+v\n", response)
if response.Verified {
fmt.Println("身份验证成功!")
} else {
fmt.Println("身份验证失败:", response.Reason)
}
}
3. 处理响应
VerifID API会返回详细的验证结果:
type IdentityVerificationResponse struct {
Verified bool `json:"verified"`
Reason string `json:"reason,omitempty"`
Score float64 `json:"score,omitempty"`
Details []Detail `json:"details,omitempty"`
TransactionID string `json:"transactionId"`
}
type Detail struct {
Field string `json:"field"`
Status string `json:"status"`
Message string `json:"message"`
}
高级功能
1. 自定义HTTP客户端
func customHTTPClient() {
// 创建自定义HTTP客户端
httpClient := &http.Client{
Timeout: 30 * time.Second,
}
// 使用自定义HTTP客户端初始化VerifID客户端
client := vl.NewClient(
"your-api-key",
"your-api-secret",
vl.WithHTTPClient(httpClient),
vl.WithEnvironment(vl.Production),
)
}
2. 设置请求超时
client := vl.NewClient(
"your-api-key",
"your-api-secret",
vl.WithTimeout(15*time.Second), // 设置15秒超时
)
3. 批量验证
func batchVerification(client *vl.Client) {
requests := []*vl.IdentityVerificationRequest{
{
FirstName: "John",
LastName: "Doe",
// 其他字段...
},
{
FirstName: "Jane",
LastName: "Smith",
// 其他字段...
},
}
results, err := client.BatchVerifyIdentity(requests)
if err != nil {
log.Fatal(err)
}
for _, result := range results {
fmt.Printf("结果: %+v\n", result)
}
}
错误处理
func handleErrors(client *vl.Client) {
_, err := client.VerifyIdentity(&vl.IdentityVerificationRequest{
// 无效请求...
})
if err != nil {
switch e := err.(type) {
case *vl.APIError:
// 处理API返回的错误
fmt.Printf("API错误: %d %s\n", e.StatusCode, e.Message)
case *vl.NetworkError:
// 处理网络错误
fmt.Printf("网络错误: %v\n", e.Err)
default:
// 其他错误
fmt.Printf("未知错误: %v\n", err)
}
return
}
}
最佳实践
- 缓存API密钥:不要硬编码API密钥,使用环境变量或配置管理系统
- 错误重试:对于临时性错误实现重试逻辑
- 日志记录:记录所有验证请求和响应(注意敏感信息)
- 性能监控:监控API调用时间和成功率
func safeVerify(client *vl.Client, request *vl.IdentityVerificationRequest) (*vl.IdentityVerificationResponse, error) {
// 实现带重试的逻辑
var lastErr error
for i := 0; i < 3; i++ {
response, err := client.VerifyIdentity(request)
if err == nil {
return response, nil
}
// 如果是临时性错误则重试
if isTemporaryError(err) {
lastErr = err
time.Sleep(time.Duration(i+1) * time.Second) // 指数退避
continue
}
return nil, err
}
return nil, lastErr
}
func isTemporaryError(err error) bool {
// 判断是否为临时性错误
// 例如网络超时、速率限制等
return false
}
通过vl-go库,你可以轻松地将VerifID的身份验证功能集成到你的Golang应用中。记得在生产环境中使用前充分测试所有功能。