关于android:详细实例教程集成华为虚假用户检测防范虚假恶意流量

前言

最近老板要我开发一个商城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办法里来调用初始化接口,示例代码如下:

@Override
protected 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办法中调用敞开接口:

@Override
protected void onPause() {
    super.onPause();
    // 敞开虚伪用户检测API
    SafetyDetect.getClient(this).shutdownUserDetect();
}

结后语

整个代码开发过程就完结啦,保姆级教程,是不是超简略,给大家看下成果:
Demo演示请戳此

附官网开发指南

华为虚伪用户检测开发指南


原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0202445499791050552?fid=18

原作者:早晨吃啥

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理