前言
最近老板要我开发一个商城App,在注册登录环节过滤掉虚伪用户,缩小这些歹意流量对App经营的影响。偶尔想起来,在往年的华为开发者大会上理解到虚伪用户检测性能,于是筹备试试集成在咱们的App上。集成后发现成果还真不错,不仅对虚伪用户识别率高,而且目前这项性能是收费凋谢的。老板再也不必放心之前的虚伪用户撞库、歹意刷帖、薅羊毛等问题了。
明天简略总结了一下我开发过程的教程,分享给大家!
官网的Demo和Sample代码体验
华为官网上有实例代码能够间接下下来看,除了虚伪用户检测(UserDetect),还有其余4个性能的示例代码,都是反对Java和Kotlin两种开发语言的:华为官网的示例代码Java/Kotlin,下载下来当前,依据官网页面的提醒阐明,改一下包名就能够运行。
我本人写的繁难sample,敌人们感兴趣也能够下下来参考。
商城App集成平安检测 sample示例
1 开发前筹备
1.1 Android studio装置
开发工具还没有装的小伙伴能够先本人下载一下:
Android studio官网下载:https://developer.android.com/studio?ha_source=hms1
Android studio装置教程:https://www.cnblogs.com/xiadewang/p/7820377.html
1.2 在AppGallery Connect中配置相干信息
在开发利用前,须要在AppGallery Connect中配置相干信息。具体操作步骤
1.3 配置华为maven仓地址
关上Android Studio我的项目级“build.gradle”文件:
增加HUAWEI agcp插件以及Maven代码库:
- 在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。
- 在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。
- 如果App中增加了“agconnect-services.json”文件则须要在“buildscript > dependencies”中减少agcp配置。
buildscript { repositories { google() jcenter() // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} } dependencies { ... // 减少agcp配置。 classpath 'com.huawei.agconnect:agcp:1.4.2.300' }} allprojects { repositories { google() jcenter() // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} }}
这里须要阐明的是,Maven仓地址无奈间接在浏览器中关上拜访,只能在IDE中配置。须要增加多个Maven代码库的话,将华为公司的Maven仓地址配置在最初哦。
1.4 增加编译依赖
关上利用级的“build.gradle”文件:
在文件头 apply plugin: 'com.android.application' 下一行增加如下配置:
apply plugin: 'com.huawei.agconnect'
在“dependencies”中增加如下编译依赖:
dependencies { implementation 'com.huawei.hms:safetydetect:5.0.5.301'}
1.5 配置混同脚本
如果你本人开发时要用到AndResGuard,那就还须要在利用级的“build.gradle”文件中退出AndResGuard容许清单,代码能够参考官网的混同配置。
2 代码开发
2.1 创立SafetyDetectClient
// 替换成本人的 activity 或者 context作为参数.SafetyDetectClient client = SafetyDetect.getClient(MainActivity.this);
2.2初始化虚伪用户行为检测
在应用该能力前,须要先通过initUserDetect接口实现初始化工作。我在商城App的LoginAct.java类的onResume办法里来调用初始化接口,示例代码如下:
@Overrideprotected void onResume() { super.onResume(); // 初始化虚伪用户检测API SafetyDetect.getClient(this).initUserDetect();}
2.3 发动检测申请
我设计的是在商城App用户登录阶段进行虚伪用户检测的,个别检测申请也能够设计在抢购、抽奖等环节。
先在LoginAct.java中的onLogin办法中,调用SafetyDetectUtil的callUserDetect办法来发动检测。我具体的业务逻辑:商场App在判断用户名和明码是否正确之前发动虚伪用户检测,而后通过回调办法来获取检测后果,并做相应的解决。若检测后果为实在用户,则容许该用户登录,否则不容许其登录操作:
private void onLogin() { final String name = ... final String password = ... new Thread(new Runnable() { @Override public void run() {// 调用通过封装后的虚伪用户检测接口,此处须要传入以后的Activity或上下文并增加回调解决 SafetyDetectUtil.callUserDetect(LoginAct.this, new ICallBack<Boolean>() { @Override public void onSuccess(Boolean userVerified) { // 虚伪用户检测胜利 if (userVerified){ // 检测后果为胜利,持续登录 loginWithLocalUser(name, password); } else { // 检测后果为失败,登录失败 ToastUtil.getInstance().showShort(LoginAct.this, R.string.toast_userdetect_error); } } }); } }).start();}
SafetyDetectUtil.java中的callUserDetect办法封装了虚伪用户检测中的要害流程,如APP ID的获取、responseToken的获取以及向App Server发送responseToken等,详见:
public static void callUserDetect(final Activity activity, final ICallBack<? super Boolean> callBack) { Log.i(TAG, "User detection start."); // 从app目录下的agconnect-services.json文件中读取app_id字段 String appid = AGConnectServicesConfig.fromContext(activity).getString("client/app_id"); // 调用虚伪用户检测 API,并增加回调来做后续的异步解决 SafetyDetect.getClient(activity) .userDetection(appid) .addOnSuccessListener(new OnSuccessListener<UserDetectResponse>() { @Override public void onSuccess(UserDetectResponse userDetectResponse) { // 虚伪用户检测胜利,通过 getResponseToken 办法来获取responseToken String responseToken =userDetectResponse.getResponseToken(); // 将该responseToken发送到App Server boolean verifyResult = verifyUserRisks(activity, responseToken); callBack.onSuccess(verifyResult); Log.i(TAG, "User detection onSuccess."); } })}
到这里,responseToken就通过虚伪用户检测API拿到啦。
2.4 获取检测后果
取得上述的responseToken后,提交至App服务端,再由App服务端发送到Safety Detect Server,调用verify云侧接口获取后果。不过在中国大陆地区,因为User Detect不反对验证码二次验证,为了保障检测同样精确无效,调用的是nocaptcha云侧接口来获取检测后果。
具体步骤:
a) 获取Access Token
关上AppGallery Connect网站 - “我的利用” - “HMSPetStoreApp” - “散发” - “利用信息”,能够查看SecretKey,如图:
而后应用SecretKey和APP ID申请华为认证服务获取Access Token,获取办法参考
b) 调用Safety Detect Server接口获取后果
依据上一步中获取到的Access Token,和之前获取到的responseToken,调用Safety Detect Server的检测后果查问接口,小伙伴戳这里参考接口调用办法。
最初获取的检测后果,能够通过App Server间接返回给App。True代表实在用户,False代表虚伪用户,App能够依据本身业务场景来实现对应的防护解决。
2.5 敞开虚伪用户检测
小伙伴们记得用完当前敞开服务,开释资源哦。在App的LoginAct.java 类的onPause办法中调用敞开接口:
@Overrideprotected void onPause() { super.onPause(); // 敞开虚伪用户检测API SafetyDetect.getClient(this).shutdownUserDetect();}
结后语
整个代码开发过程就完结啦,保姆级教程,是不是超简略,给大家看下成果:
Demo演示请戳此
附官网开发指南
华为虚伪用户检测开发指南
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0202445499791050552?fid=18
原作者:早晨吃啥