核酸检测后果蕴含个人隐私数据且数据量较大,如何在云端让核酸检测人员实现海量数据的平安存储/查问成为了核酸检测数据存储的首要难题。华为AppGallery Connect提供了认证服务和云数据库服务两大Serverless服务,可别离实现用户认证登录、数据写入/查问等根本端云协同性能,可完满解决核酸检测数据查问/存储问题,并可通过平安的身份验证性能保证数据的安全性。
《Codelabs挑战赛——零根底搭建认证查问零碎》流动正在炽热进行中,分享作品有机会取得华为freebuds pro无线耳机、华为手环6nfc版、联盟背包等丰富大礼,快来参加吧>>https://developer.huawei.com/...
本文从上述需要及业务痛点登程,利用认证服务和云数据库两大Serverless服务,构建了核酸检测后果认证查问零碎,零碎性能及技术选型如下:
开发筹备
开明服务
应用AppGallery Connect (简称AGC)的服务,须要在AGC治理台上开明(在AGC管制台上能够一站式体验AGC提供的所有服务)。开明服务之前须要先注册华为开发者帐号,依照领导文档即可,在此不再赘述。
本文次要介绍零碎的登录认证性能,故仅介绍对应服务-认证服务在利用中的开明。开明服务前须要创立对应的我的项目和我的项目下的利用:
1.登录AGC治理台,点击“我的我的项目”,抉择“增加我的项目”,填写项目名称。
2.点击跳转到的我的项目设置页面的“增加利用”,填写利用信息后确认。
至此,我的项目及我的项目下的利用便创立实现了。
3.在菜单目录下找打“构建-认证服务”,点击右上角“立刻开明”,抉择数据处理地位(数据处理地位即为冀望的解决您利用及用户的数据的存储地位),国内个别抉择“中国”。而后,抉择启用“手机号码”这一认证形式。
至此,认证服务曾经开明胜利了。
集成SDK
AGC以SDK的形式凋谢了其对华为帐号、游戏帐号等帐号的匿名登录能力,在开发认证性能之前,须要先集成认证服务SDK,且须要下载AGC提供的JSON文件获取利用的根本信息和数据处理地位信息等。
1.1 集成SDK
当您在Android Studio中创立我的项目后,在我的项目中SDK的集成步骤如下:
1.在我的项目级build.gradle文件下配置maven仓和AGC插件地址:
// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositories { google() jcenter() //maven仓地址 maven {url 'https://developer.huawei.com/repo/'} } dependencies { classpath "com.android.tools.build:gradle:4.1.0" //AGC插件地址 classpath 'com.huawei.agconnect:agcp:1.6.5.300' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}allprojects { repositories { google() jcenter() //maven仓地址 maven {url 'https://developer.huawei.com/repo/'} }}task clean(type: Delete) { delete rootProject.buildDir}
2.在利用级build.gradle文件下配置编译依赖和认证服务SDK
plugins {id 'com.android.application'//增加AGC的依赖 id 'com.huawei.agconnect'}android { compileSdkVersion 30 buildToolsVersion "30.0.1" defaultConfig { applicationId "com.huawei.covid19detection" minSdkVersion 19 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }}dependencies { //agc-core的依赖 implementation 'com.huawei.agconnect:agconnect-core:1.6.5.300' implementation 'androidx.appcompat:appcompat:1.3.0' implementation 'com.google.android.material:material:1.3.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.3'androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'//认证服务sdk implementation 'com.huawei.agconnect:agconnect-auth:1.6.5.300' }
上述SDK或依赖增加实现后,须要点击右上角“Sync Now”期待同步实现。
1.2 增加配置文件
为了简化开发者的配置步骤,向开发者提供了保留利用配置信息的配置文件,只须要将配置文件增加到工程目录并集成AGC插件,AGC插件能够主动将利用信息加载到开发环境中。
1.关上刚刚创立我的项目的“我的项目设置”,下载配置文件“agconnect-services.json”。
2.将下载的JSON文件放到Android Studio我的项目的利用级目录下,后续集成云数据库后JSON文件要从新下载放入。
界面设计
简略来说,应用手机帐号借助认证服务实现登录认证性能对界面的要求只有以下两点:具备必要的注册界面(包含帐号、明码和验证码的输出)和具备必要的登录界面即可(此次我应用的是验证码登录,故有账号输出和验证码输出即可),示例界面及代码如下:
注册界面:
登录界面:
帐号注册
核酸检测查问零碎应具备残缺的帐号注册和登录的性能,保证系统的安全性和可靠性。AGC认证服务提供了手机帐号注册的性能,注册胜利后即可疾速登录。
1.查阅官网文档后发现,注册手机帐号须要先获取验证码,AGC也提供了获取验证码的接口AGConnectAuth.requestVerifyCode,从API文档来看,填写国家码和手机号,点击“OBTAIN”即可申请。
findViewById(R.id.verification_code_obtain).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String phoneNumberStr = editText_num.getText().toString().trim(); VerifyCodeSettings settings = new VerifyCodeSettings.Builder() .action(VerifyCodeSettings.ACTION_REGISTER_LOGIN) .sendInterval(30) .locale(Locale.CHINA) .build(); Task<VerifyCodeResult> task = AGConnectAuth.getInstance().requestVerifyCode(countryCodeStr, phoneNumberStr, settings); task.addOnSuccessListener(TaskExecutors.uiThread(), new OnSuccessListener<VerifyCodeResult>() { @Override public void onSuccess(VerifyCodeResult verifyCodeResult) { //验证码申请胜利 Log.d(TAG, "onSuccess: message send successfully"+phoneNumberStr); Toast.makeText(RegisterActivity.this,"send phone verify code success",Toast.LENGTH_LONG).show(); } }).addOnFailureListener(TaskExecutors.uiThread(), new OnFailureListener() { @Override public void onFailure(Exception e) { //失败就销户 //AGConnectAuth.getInstance().deleteUser(); Log.e(TAG, "onSuccess: message send failed"+phoneNumberStr); Toast.makeText(RegisterActivity.this, "requestVerifyCode fail:" + e, Toast.LENGTH_SHORT).show(); } }); } });
页面Toast提醒“send phone verify code success”即示意验证码申请胜利,接管到的验证码示例如下:
在EditText中填写验证码,点击“Rigister”即可注册胜利。
对应为AGConnectAuth.createUser注册用户接口。注册胜利后,请返回登录页面登录。
findViewById(R.id.register).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) { String phoneNumberStr = editText_num.getText().toString().trim(); String vericode = veri_code.getText().toString().trim(); String rePsd = repsd_txt.getText().toString().trim(); PhoneUser phoneUser = new PhoneUser.Builder() .setCountryCode(countryCodeStr) .setPhoneNumber(phoneNumberStr) .setVerifyCode(vericode) .setPassword(rePsd) .build(); AGConnectAuth.getInstance().createUser(phoneUser) .addOnSuccessListener(new OnSuccessListener<SignInResult>() { @Override public void onSuccess(SignInResult signInResult) { //创立帐号胜利后,默认已登录,进入主页面 Intent intent = new Intent(); intent.setClass(RegisterActivity.this, LoginActivity.class); startActivity(intent); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { Toast.makeText(RegisterActivity.this, "register fail:" + e, Toast.LENGTH_SHORT).show(); } }); } });
登录认证
注册胜利后,应用AGC认证服务登录利用的形式有验证码登录和明码登录两种。此处仅实现了验证码登录,明码登录实现请参考[领导文档](https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-auth-android-phone-0000001053333941#section113465541619)
。
1.申请验证码波及接口与帐号注册统一,参考申请即可。
2.应用获取的验证码生成手机帐号登录凭证,因为咱们并未设置输出明码框,此处password参数填null即可。
AGConnectAuthCredential credential = PhoneAuthProvider.credentialWithVerifyCode(countryCodeStr, phoneNumberStr, null, userVeri);
3.应用生成的帐号凭证登录利用,详见AGConnectAuth.signIn。
findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String phoneNumberStr = loginText_num.getText().toString().trim(); String vericode = loginVeri_code.getText().toString().trim(); AGConnectAuthCredential credential = PhoneAuthProvider.credentialWithVerifyCode(countryCodeStr,phoneNumberStr,"",vericode); AGConnectAuth.getInstance().signIn(credential) .addOnSuccessListener(new OnSuccessListener<SignInResult>() { @Override public void onSuccess(SignInResult signInResult) { Intent intent = new Intent(); intent.setClass(LoginActivity.this, DatabaseActivity.class); startActivity(intent); Log.i(TAG, "onSuccess: login success"); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { } }); } });
登录胜利后,即可跳转到利用主界面。主界面展现核酸检测后果数据,数据的导入及展现咱们会在下一篇领导具体论述。
总结
应用AGC认证服务通过申请验证码的形式进行帐号注册和登录整个开发过程次要的工作量在后期的服务开明和SDK集成方面,外围性能代码开发量不大,SDK大小管制在了MB以内(可参考华为AGC SDK大小大揭秘)。
下篇咱们将介绍如何应用AGC的云数据库导入/记录核酸检测后果数据并进行查问展现。
参考文档:
如何应用手机帐号实现利用的注册登录:https://developer.huawei.com/...
认证服务注册和登录相干API参考:
https://developer.huawei.com/...
开发筹备和集成SDK必读:
https://developer.huawei.com/...