产品动态
产品公告

SdkToken以及通过SdkToken拉取最终的核身结果。
var FaceIdClient *faceid.Clientfunc init() {// 初始化客户端配置对下,您可以指定超时时间和其他配置项prof := profile.NewClientProfile()prof.HttpProfile.ReqTimeout = 60// TODO 需要替换成您调用账号的 SecretId 和 SecretKeycredential := cloud.NewCredential("SecretId", "SecretKey")var err error// 初始化调用慧眼人脸核身服务的客户端FaceIdClient, err = faceid.NewClient(credential, "ap-singapore", prof)if nil != err {log.Fatal("FaceIdClient init error: ", err)}}// GetFaceIdToken 获取人脸核身Tokenfunc GetFaceIdToken(w http.ResponseWriter, r *http.Request) {log.Println("get face id token")// 步骤1: 解析请求参数_ = r.ParseForm()var SecureLevel = r.FormValue("SecureLevel")// 步骤2: 初始化请求对象,并给必要的参数赋值request := faceid.NewGetFaceIdTokenIntlRequest()request.SecureLevel = &SecureLevel// 步骤3: 通过FaceIdClient调用人脸核身服务response, err := FaceIdClient.GetFaceIdTokenIntl(request)// 步骤4: 处理腾讯云API的响应,并构造返回对象if nil != err {_, _ = w.Write([]byte("error"))return}SdkToken := response.Response.SdkTokenapiResp := struct {SdkToken *string}{SdkToken: SdkToken}b, _ := json.Marshal(apiResp)// ... 其他业务处理代码//步骤5: 返回服务响应_, _ = w.Write(b)}// GetFaceIdResult 获取人脸核身核验结果func GetFaceIdResult(w http.ResponseWriter, r *http.Request) {// 步骤1: ... 解析请求参数_ = r.ParseForm()SdkToken := r.FormValue("SdkToken")// 步骤2: 初始化请求对象,并给必要的参数赋值request := faceid.NewGetFaceIdResultIntlRequest()request.SdkToken = &SdkToken// 步骤3: 通过FaceIdClient调用人脸核身服务response, err := FaceIdClient.GetFaceIdResultIntl(request)// Step 4: 处理腾讯云API的响应,并构造返回对象if nil != err {_, _ = w.Write([]byte("error"))return}result := response.Response.ResultapiResp := struct {Result *string}{Result: result}b, _ := json.Marshal(apiResp)// ... 其他业务处理代码//步骤5: 返回服务响应_, _ = w.Write(b)}func main() {// 注册http接口路径http.HandleFunc("/api/v1/get-token", GetFaceIdToken)http.HandleFunc("/api/v1/get-result", GetFaceIdResult)// 监听端口err := http.ListenAndServe(":8080", nil)if nil != err {log.Fatal("ListenAndServe error: ", err)}}
SdkToken , 访问 http://ip:port/api/v1/get-result 接口查看 Result 字段的响应是否为 0 以判断服务端集成是否成功,具体的响应结果详见 API 接口部分的介绍。huiyansdk_android_overseas_1.0.9.6_release.aar(具体版本号以官网下载为准)和 tencent-ai-sdk-youtu-base-1.0.1.39-release.aar 、 tencent-ai-sdk-common-1.1.36-release.aar、tencent-ai-sdk-aicamera-1.0.22-release.aar (具体版本号以最终提供为准) 添加到您工程的 libs 目录下。├── codedemo│ ├── build.gradle│ ├── libs│ │ ├── huiyansdk_android_overseas_1.0.9.14_release.aar│ │ ├── tencent-ai-sdk-aicamera-1.0.25-release.aar│ │ ├── tencent-ai-sdk-common-1.1.43-release.aar│ │ ├── tencent-ai-sdk-network-1.0.2.3.6-release.aar│ │ └── tencent-ai-sdk-youtu-base-1.0.1.44-release.aar│ ├── proguard-rules.pro│ └── src│ └── main
// 设置ndk so架构过滤(以armeabi-v7a为例,如果设备支持 arm64-v8a 也可以加)defaultConfig {ndk {abiFilters 'armeabi-v7a'}}dependencies {// 引入SDKimplementation files("libs/huiyansdk_android_overseas_1.0.9.5_release.aar")// 通用算法SDKimplementation files("libs/tencent-ai-sdk-youtu-base-1.0.1.32-release.aar")// 通用能力组件库implementation files("libs/tencent-ai-sdk-common-1.1.27-release.aar")implementation files("libs/tencent-ai-sdk-aicamera-1.0.18-release.aar")implementation files("libs/tencent-ai-sdk-network-1.0.2.3.6-release.aar")// SDK需要依赖的第三方库// gsonimplementation 'com.google.code.gson:gson:2.8.9'}
<!-- 摄像头权限 --><uses-permission android:name="android.permission.CAMERA" /><uses-featureandroid:name="android.hardware.camera"android:required="true" /><!-- SDK需要的网络权限 --><uses-permission android:name="android.permission.INTERNET" /><!-- 设备风控需要依赖 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- SDK可选需要的权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@Overridepublic void onCreate() {super.onCreate();instance = this;// SDK需要在Application初始化时进行初始化HuiYanOsApi.init(getApp());}

// HuiYanOs的相关参数HuiYanOsConfig huiYanOsConfig = new HuiYanOsConfig();// 此license文件存放在assets下huiYanOsConfig.setAuthLicense("YTFaceSDK.license");// 设备风控的license文件(使用设备风控模式的情况下需要),也要存放在assets下huiYanOsConfig.setRiskLicense("turing.lic");// 开启设备风控能力huiYanOsConfig.setOpenCheckRiskMode(true);if (compatCheckBox.isChecked()) {huiYanOsConfig.setPageColorStyle(PageColorStyle.Dark);}// 启动核身方法,开始的活体,currentToken为后台下发数据HuiYanOsApi.startHuiYanAuth(currentToken, huiYanOsConfig, new HuiYanOsAuthCallBack() {@Overridepublic void onSuccess(HuiYanOsAuthResult authResult) {//显示结果runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(SimplifyActivity.this, "活体通过!", Toast.LENGTH_SHORT).show();}});}@Overridepublic void onFail(int errorCode, String errorMsg, String token) {String msg = "活体失败 " + "code: " + errorCode + " msg: " + errorMsg + " token: " + token;Log.e(TAG, "onFail" + msg);//显示结果runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(SimplifyActivity.this, msg, Toast.LENGTH_SHORT).show();}});}});
├── codedemo│ ├── build.gradle│ ├── libs│ ├── proguard-rules.pro│ └── src│ └── main│ └── assets│ ├── turing.lic│ └── YTFaceSDK.license
@Overrideprotected void onDestroy() {super.onDestroy();// 退出时做资源释放HuiYanOsApi.release();}
#SDK的混淆包含-keep class com.tencent.could.huiyansdk.** {*;}-keep class com.tencent.could.aicamare.** {*;}-keep class com.tencent.could.component.** {*;}-keep class com.tencent.youtu.** {*;}-keep class com.tenpay.utils.SMUtils {*;}-keep class com.tencent.turingface.** {*;}-keep class com.turingface.sdk.** {*;}-keep class com.tencent.cloud.ai.network.** {*;}
└──HuiYanOverseasSDK.xcframework
├── YTFaceSDK.license├── turing.license└── face-tracker-v003.bundle
└── HuiYanSDKUI.bundle
├──Your Project.xcodeproj├──Podfile├──CloudHuiYanSDK_FW├───────CloudHuiYanSDK_FW.podspec├───────Frameworks├────────────HuiYanOverseasSDK.xcframework├───────Resources├────────────HuiYanSDKUI.bundle└────────────face-tracker-v003.bundle
Pod::Spec.new do |s|s.name = "CloudHuiYanSDK_FW"s.version = "1.0.0"s.platform = :ios, "9.0"s.summary = 'frameworks and bundle resources for youtu mobile hdr's.homepage = 'xx's.license = 'MIT's.source = {:git => 'xx' ,:tag => "#{s.version}"}s.static_framework = trues.compiler_flags = "-ObjC"s.author = {'xx' => 'xx'}s.pod_target_xcconfig = {'VALID_ARCHS' =>['arm64', 'x86_64']}s.subspec 'Resources' do |framework|framework.resource = 'Resources/*.bundle'ends.subspec 'Framework' do |framework|framework.frameworks = 'Accelerate'framework.vendored_frameworks = 'Frameworks/*.xcframework'endend
target 'HuiYanAuthDemo' douse_frameworks!pod 'CloudHuiYanSDK_FW', :path => './CloudHuiYanSDK_FW'end
Build Settings -> Framework Search Paths add $(inherited)Build Settings -> Other Linker Flags add $(inherited)key-value 值。<key>Privacy - Camera Usage Description</key><string>人脸核身需要开启您的摄像头权限,用于人脸识别</string>

#import <HuiYanOverseasSDK/HuiYanSDK.h>//获取tokenNSString *faceToken = self.tokenTextField.text;//配置SDKHuiYanOsConfig *config = [[HuiYanOsConfig alloc] init];//设置licconfig.authLicense = [[NSBundle mainBundle] pathForResource:@"YTFaceSDK.license" ofType:@""];//准备阶段超时配置config.prepareTimeoutMs = 20000;//动作阶段超时配置config.actionTimeoutMs = 20000;// 删除本地活体视频config.isDeleteVideoCache = YES;// 设置UI相关回调config.delegate = self;//自定义多语言配置config.languageType = EN;// config.userLanguageFileName = @"ko";// config.userLanguageBundleName = @"UseLanguageBundle";config.iShowTipsPage = YES;[[HuiYanOSKit sharedInstance] startHuiYaneKYC:faceToken withConfig:config witSuccCallback:^(HuiYanOsAuthResult * _Nonnull authResult, id _Nullable reserved) {NSString *token = authResult.faceToken;} withFailCallback:^(int errCode, NSString * _Nonnull errMsg, id _Nullable reserved) {NSString *showMsg = [NSString stringWithFormat:@"err:%d:%@",errCode,errMsg];NSLog(@"err:%@",showMsg);}];
HuiYanOsConfig *config = [[HuiYanOsConfig alloc] init];config.authLicense = [[NSBundle mainBundle] pathForResource:@"YTFaceSDK.license" ofType:@""];config.openCheckRiskMode = YES;config.riskLicense = [[NSBundle mainBundle] pathForResource:@"turing.license" ofType:@""];
GetFaceIdTokenIntl 或 ApplySdkVerificationToken 接口获取业务 Token 时,需要通过设置 SdkVersion 参数来指定启用增强模式或 Plus 模式:SdkVersion 值SdkVersion 值文档反馈