本文介绍Go SDK集成纯服务端认证方案的操作方法。
SDK使用说明
如果需要其他语言的SDK示例代码,您可以通过OpenAPI 开发者门户在线调试工具调试API接口。该工具会自动生成相应API的SDK调用示例代码,详细信息,请参见调试ContrastSmartVerify接口。
前提条件
需要使用的Go版本在1.12.0版本及以上。
已添加认证场景,并获取对应的场景ID。具体操作,请参见添加认证场景。
引入依赖包
go get github.com/alibabacloud-go/tea-rpc
go get github.com/alibabacloud-go/tea-utils
go get github.com/alibabacloud-go/tea
go get -u github.com/aliyun/credentials-go
说明
Credentials工具配置方法,请参见身份验证配置。
安装SDK
关于Go SDK源代码,请参见Go SDK包。
通过Go mod来管理项目依赖:
go get github.com/alibabacloud-go/cloudauth-20200618@vv1.0.4
调用示例
方式一:不使用本地图片示例
package main import ( "fmt" cloudauth "github.com/alibabacloud-go/cloudauth-20200618/client" rpc "github.com/alibabacloud-go/tea-rpc/client" util "github.com/alibabacloud-go/tea-utils/service" "github.com/alibabacloud-go/tea/tea" "github.com/aliyun/credentials-go/credentials" ) func CreateClient (endpoint *string) (_result *cloudauth.Client, _err error) { //阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 //强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 //本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。 // 初始化Credential。 credential, _err := credentials.NewCredential(nil) if _err != nil { panic(_err) } // 初始化Client。 config := &openapi.Config{ // 使用Credential配置凭证。 Credential: credential, Endpoint: endpoint, // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), } //_result = &cloudauth.Client{} _result, _err = cloudauth.NewClient(config) return _result, _err } func _main () (_err error) { request := &cloudauth.ContrastSmartVerifyRequest{ // 请输入场景ID。 SceneId: tea.Int64(xxx), OuterOrderNo: tea.String("商户请求的唯一标识"), // 增强版实人认证的业务场景类型。取值: // CERT_SAFE:纯认证模式。 // CERT_PHOTO_SAFE:认证及照片防翻拍检测模式。 // MARKET_SAFE:营销安全(包含认证、防翻拍和营销风险识别功能)。 // FINANCE_SAFE:金融安全(包含认证、防翻拍和金融风险识别功能)。 // ACCOUNT_SAFE:注册安全(包含认证、防翻拍和注册风险识别功能)。 Mode: tea.String("CERT_SAFE"), // 固定值IDENTITY_CARD。 CertType: tea.String("IDENTITY_CARD"), CertName: tea.String("xxx"), CertNo: tea.String("xxx"), // 公网可以访问的HTTP、HTTPS链接。 FacePicUrl: tea.String("http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg"), // 使用图片Base64编码方式。 // FacePicString: tea.String("xxxxx"), // Ip: tea.String("用户IP地址"), // UserId: tea.String("用户ID"), // 当Mode取值为MARKET_SAFE、FINANCE_SAFE或ACCOUNT_SAFE时,Mobile为必填字段。 // Mobile: tea.String("130xxxxxxxx"), } response, _err := contrastSmartVerifyAutoRoute(request) // 不支持服务自动路由。 // response, _err := contrastSmartVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request) if _err != nil { return _err } fmt.Println(*response.RequestId) fmt.Println(*response.Code) fmt.Println(*response.Message) fmt.Println(*response.ResultObject.Passed) fmt.Println(*response.ResultObject.SubCode) fmt.Println(*response.ResultObject.VerifyInfo) fmt.Println(*response.ResultObject.RiskInfo) return _err } func contrastSmartVerifyAutoRoute (request *cloudauth.ContrastSmartVerifyRequest) (_result *cloudauth.ContrastSmartVerifyResponse, _err error) { endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")} var lastResponse *cloudauth.ContrastSmartVerifyResponse for _, endpoint := range endpoints { response, _err := contrastSmartVerify(endpoint, request) if _err != nil { var err = &tea.SDKError{} if _t, ok := _err.(*tea.SDKError); ok { err = _t // 网络异常,切换到下个区域调用。 if tea.BoolValue(util.EqualString(tea.String("ServiceUnavailable"), err.Code)) { continue } } return _result, _err } if tea.BoolValue(util.EqualString(tea.String("500"), response.Code)) { continue } _result = response return _result, _err } _result = lastResponse return _result, _err } func contrastSmartVerify (endpoint *string, request *cloudauth.ContrastSmartVerifyRequest) (_result *cloudauth.ContrastSmartVerifyResponse, _err error) { client, _err := CreateClient(endpoint) if _err != nil { return _result, _err } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) _result = &cloudauth.ContrastSmartVerifyResponse{} _body, _err := client.ContrastSmartVerify(request, runtime) if _err != nil { return _result, _err } _result = _body return _result, _err } func main() { err := _main() if err != nil { panic(err) } }
方式二:使用本地图片示例
package main import ( "fmt" cloudauth "github.com/alibabacloud-go/cloudauth-20200618/client" rpc "github.com/alibabacloud-go/tea-rpc/client" util "github.com/alibabacloud-go/tea-utils/service" "github.com/alibabacloud-go/tea/tea" "github.com/aliyun/credentials-go/credentials" "os" ) func CreateClient (endpoint *string) (_result *cloudauth.Client, _err error) { //阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 //强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 //本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。 // 初始化Credential。 credential, _err := credentials.NewCredential(nil) if _err != nil { panic(_err) } // 初始化Client。 config := &openapi.Config{ // 使用Credential配置凭证。 Credential: credential, Endpoint: endpoint, // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), } //_result = &cloudauth.Client{} _result, _err = cloudauth.NewClient(config) return _result, _err } func _main () (_err error) { f, err := os.Open("/xxx.png") if err != nil { return err } request := &cloudauth.ContrastSmartVerifyAdvanceRequest{ // 请输入场景ID。 SceneId: tea.Int64(xxx), OuterOrderNo: tea.String("商户请求的唯一标识"), // 增强版实人认证的业务场景类型。取值: // CERT_SAFE:纯认证模式。 // CERT_PHOTO_SAFE:认证及照片防翻拍检测模式。 // MARKET_SAFE:营销安全(包含认证、防翻拍和营销风险识别功能)。 // FINANCE_SAFE:金融安全(包含认证、防翻拍和金融风险识别功能)。 // ACCOUNT_SAFE:注册安全(包含认证、防翻拍和注册风险识别功能)。 Mode: tea.String("CERT_PHOTO_SAFE"), // 固定值IDENTITY_CARD。 CertType: tea.String("IDENTITY_CARD"), CertName: tea.String("xxx"), CertNo: tea.String("xxx"), // Ip: tea.String("用户IP地址"), // UserId: tea.String("用户ID"), // 当Mode取值为MARKET_SAFE、FINANCE_SAFE或ACCOUNT_SAFE时,Mobile为必填字段。 // Mobile: tea.String("130xxxxxxxx"), FacePicFileObject: f, } response, _err := contrastSmartVerifyAdvanceAutoRoute(request) // 不支持服务自动路由。 // response, _err := contrastSmartVerifyAdvance(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request) f.Close() if _err != nil { return _err } fmt.Println(*response.RequestId) fmt.Println(*response.Code) fmt.Println(*response.Message) fmt.Println(*response.ResultObject.Passed) fmt.Println(*response.ResultObject.SubCode) fmt.Println(*response.ResultObject.VerifyInfo) fmt.Println(*response.ResultObject.RiskInfo) return _err } func contrastSmartVerifyAdvanceAutoRoute (request *cloudauth.ContrastSmartVerifyAdvanceRequest) (_result *cloudauth.ContrastSmartVerifyResponse, _err error) { endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")} var lastResponse *cloudauth.ContrastSmartVerifyResponse for _, endpoint := range endpoints { response, _err := contrastSmartVerifyAdvance(endpoint, request) if _err != nil { var err = &tea.SDKError{} if _t, ok := _err.(*tea.SDKError); ok { err = _t // 网络异常,切换到下个区域调用。 if tea.BoolValue(util.EqualString(tea.String("ServiceUnavailable"), err.Code)) { continue } } return _result, _err } if tea.BoolValue(util.EqualString(tea.String("500"), response.Code)) { continue } _result = response return _result, _err } _result = lastResponse return _result, _err } func contrastSmartVerifyAdvance (endpoint *string, request *cloudauth.ContrastSmartVerifyAdvanceRequest) (_result *cloudauth.ContrastSmartVerifyResponse, _err error) { client, _err := CreateClient(endpoint) if _err != nil { return _result, _err } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) _result = &cloudauth.ContrastSmartVerifyResponse{} _body, _err := client.ContrastSmartVerifyAdvance(request, runtime) if _err != nil { return _result, _err } _result = _body return _result, _err } func main() { err := _main() if err != nil { panic(err) } }
反馈
- 本页导读
文档反馈