快出海  > AppGallery  >  基于华为AGC认证服务快速构建社交应用登录系统

基于华为AGC认证服务快速构建社交应用登录系统

作者:Mayism
时间:2021-04-08
众所周知,一般想要开发一个社交应用需要客户端服务器等很多模块配合才能够实现。尤其是登录系统,想要构建一个安全高效的登录需要大量的开发维护工作。今天就教大家如何不需要搭建任何服务器就可以完成一个简单的社交应用登录系统开发。

 众所周知,一般想要开发一个社交应用需要客户端服务器等很多模块配合才能够实现。尤其是登录系统,想要构建一个安全高效的登录需要大量的开发维护工作。今天就教大家如何不需要搭建任何服务器就可以完成一个简单的社交应用登录系统开发。

我们的登录认证系统使用的是华为AppGallery Connect认证服务,首先简单介绍一下AppGallery Connect,AppGallery Connect(简称AGC),致力于为开发者提供应用创意、开发、分发、运营、分析全生命周期服务,构建全场景智慧化的应用生态。目前,AGConnect已经开通了87项服务。

ia_4900000002.png

华为AGC认证服务就提供了一套完整的手机号和邮箱地址注册登录系统。

首先,对于新的用户,认证服务提供了账号的注册系统。首先看下我们的应用注册界面:

ia_4900000003.png

手机号注册与邮箱注册的具体流程大致相同,以手机号码注册流程为例:

ia_4900000004.png

认证服务SDK提供了内置的验证码发送功能,应用不需要自己去找通讯供应商开通发送验证码的服务,非常方便。邮箱认证也提供了发送邮箱验证码的功能,只需要调用AGConnectAuth.requestVerifyCode传入用户信息就可以请求验证码。代码示例如下:

String countryCode = "86";

 VerifyCodeSettings settings = VerifyCodeSettings.newBuilder()

         .action(VerifyCodeSettings.ACTION_REGISTER_LOGIN)

         .sendInterval(30) //shortest send interval ,30-120s

         .locale(Locale.SIMPLIFIED_CHINESE) //optional,must contain country and language eg:zh_CN

         .build();

 if (notEmptyString(countryCode) && notEmptyString(accountNumber)) {

     Task<VerifyCodeResult> task = PhoneAuthProvider.requestVerifyCode(countryCode, accountNumber, settings);

     task.addOnSuccessListener(TaskExecutors.uiThread(), verifyCodeResult ->

             Toast.makeText(RegisterActivity.this, "verify code has been sent.", Toast.LENGTH_SHORT).show()

     ).addOnFailureListener(TaskExecutors.uiThread(), e -> {

         Toast.makeText(RegisterActivity.this, "Failed. "+e.getMessage(), Toast.LENGTH_SHORT).show();

         Log.e(TAG, "requestVerifyCode fail:" + e.getMessage());

     });

 } else {

     AGConnectCrash.getInstance().testIt(RegisterActivity.this);

 }

在我们的注册页面中,也可以看到一个输入密码的输入框,这里SDK又提供了一个很便捷的功能。认证服务给用户提供了验证码和密码两种登录方式。用户在注册的时候可以选择是否给自己的账号设置一个密码,如果密码这里选择了设置,那后续登录的时候就可以使用密码的方式来登录,如果没有在注册时设置,则可以通过验证码的方式来登录。注册成功后,SDK会自动帮用户进行登录,无需再跳转回登录界面重新登录。我们开发的社交登录系统注册的时候设置了密码,相关示例代码如下:

PhoneUser phoneUser = new PhoneUser.Builder()

         .setCountryCode(countryCode)

         .setPhoneNumber(accountNumber)

         .setVerifyCode(verifyCode)

         .setPassword(password)

         .build();

 AGConnectAuth.getInstance().createUser(phoneUser).addOnSuccessListener(signInResult -> {

     String phoneNumber = signInResult.getUser().getPhone();

     String uid = signInResult.getUser().getUid();

     Bundle data = new Bundle();

     data.putString("phone", phoneNumber);

     data.putString("uid", uid);

     Intent intent = new Intent(RegisterActivity.this, ImageListActivity.class);

     intent.putExtras(data);

     startActivity(intent);

     finish();

 }).addOnFailureListener(e -> {

     Log.e(TAG, "register error, " + e);

     ToastUtils.showToast(RegisterActivity.this, "Register failed. "+e.getMessage());

 });

对于已经注册的用户,我们同样提供了使用手机号或邮箱登录的能力。下面我们的登录界面:

ia_4900000005.png

由于我们的应用只设置了使用密码登录,所以在刚刚的注册环节也必须是输入密码。代码中,只需要调用signin接口将用户相应的数据传入就可以进行登录了。登录代码示例如下:

String countryCode = "86";

 AGConnectAuthCredential credential = PhoneAuthProvider.credentialWithVerifyCode(

         countryCode,

         phoneAccount,

         photoPassword,

         null ); // password, can be null

 AGConnectAuth.getInstance().signIn(credential).addOnSuccessListener(signInResult -> {

     String phoneNumber = signInResult.getUser().getPhone();

     String uid = signInResult.getUser().getUid();

     Bundle data = new Bundle();

     data.putString("account", this.getString(R.string.phone_user)+phoneNumber.substring(11, 15));

     data.putString("uid", uid);

     ToastUtils.showToast(LoginActivity.this, "Login Success");

     Intent intent = new Intent(LoginActivity.this, ImageListActivity.class);

     intent.putExtras(data);

     startActivity(intent);

     finish();

 }).addOnFailureListener(e -> {

     Log.e(TAG, "Login failed: " + e.getMessage());

     ToastUtils.showToast(LoginActivity.this, "Account Error,Confirm and try again");

 });

登录成功后认证服务会返回一个当前用户的唯一ID,开发者可以根据这个ID来区分不同的用户。可以看到我们的登录界面还有一个匿名登录的选项。这个也是认证服务提供的。认证服务提供了用户的匿名模式,用户可以不注册不登录,通过匿名的方式来体验应用的功能,通俗点说就是游客模式,这样可以给用户一个试用的机会,提高应用转化率,有兴趣的可以参考文档实现。

登录成功后,我们来到了图片展示页面:

ia_4900000006.png

这个页面分为两个部分,第一部分为标题部分,分为用户的名称以及三个操作的按钮,分别为添加图片,刷新与退出登录。用户的名称是通过认证服务登录成功以后的返回信息里获取的。退出登录则用到了认证服务的退出登录功能,退出后界面会就返回到之前的登录界面,退出登录的功能实现就不赘述了,调用signout接口即可。

而页面下半部分的图片展示则使用到了AGC的云存储云数据库等功能,这些功能也是基于认证服务来实现的。认证服务可以为云存储与云数据库提供凭证,例如云数据库服务需要认证服务的权限认证才可以进行增删改等操作。具体这些服务是怎么应用到我们的App中的,我将在以后的文章中为大家介绍。

总结:

使用华为AGC认证服务免除了自己搭建服务器进行登录认证的烦恼,仅通过集成认证服务SDK即可实现包括手机、邮箱在内多种认证方式的端到端注册登录流程,整个开发流程半天到一天即可搞定,同时也比自有认证系统更加安全。

立即登录,阅读全文
版权说明

本文内容来自于华为开发者论坛,本站不拥有所有权,不承担相关法律责任。文章内容系作者个人观点,不代表快出海对观点赞同或支持。如有侵权,请联系管理员(hj@kchuhai.com)删除!

相关文章
应用出海如何起量?华为应用市场聚合全球五大流量场域,助力开发者扬帆起航
应用出海如何起量?华为应用市场聚合全球五大流量场域,助力开发者扬帆起航
随着国内移动应用市场的成熟发展,越来越多的开发者将目光锁定海外,希望通过海外布局寻求新的增长空间,增强行业竞争力。近年来,国内应用出海规模不断扩大,为助力应用更好地掘金海外市场,4月23日,华为应用市场商业推广在苏州举办出海系列沙龙。会议以“共舟前行,创新未来”为主题,聚焦海外市场推广,介绍了华为应用市场商业推广在海外不同地区为应用提供的全方位资源支持以及2021年的发展新方向,为打算出海以及正在出海的应用增添澎湃新动力。
金融界
2021-04-25
俄罗斯一款App集成华为能力后,恶评识别率大幅提升
俄罗斯一款App集成华为能力后,恶评识别率大幅提升
俄罗斯卫星通讯社(Sputnik)是享有国际声誉的卫星通讯社,旗下新闻应用程序提供高质量的国际新闻,包括突发新闻、全球重大事件、深度报道、在线广告视频和独家采访。App集成了系统完整性检测功能后,应用市场内恶意评论识别率提升了14%。
华为开发者联盟服务
2021-04-16
华为应用市场推广丨“桌面推荐”放量了!预计覆盖上亿设备数
华为应用市场推广丨“桌面推荐”放量了!预计覆盖上亿设备数
2021年3月开始,“热门推荐”文件夹逐步放量,在更多机型上获得了曝光。深受合作伙伴喜爱的“热门推荐”文件夹,此前只在2020年的部分新机型上展示。现放量后,装有“热门推荐”的设备数成倍增长,且放量持续到8月底。大家千万不要错过这一波流量红利,赶快建立“桌面推荐”的独立投放任务将这一波优质流量收入囊中吧!
华为开发者联盟服务
2021-04-16
HUAWEIAppGalleryConnect获得多项SOC国际权威认证
HUAWEIAppGalleryConnect获得多项SOC国际权威认证
近日,华为应用市场AppGallery Connect(简称AGC)成功通过国际权威标准组织“美国注册会计师协会(AICPA)”认定的SOC1 Type2、SOC2 Type1、SOC2 Type2和SOC3四项权威认证,表明AGC平台的信息安全管理能力已达到国际公认的最高标准,为开发者提供世界一流的安全隐私保障及服务。
华为开发者联盟服务
2021-04-16
AppGallery Connect:同时集成认证服务与云数据库Server SDK Netty报错
AppGallery Connect:同时集成认证服务与云数据库Server SDK Netty报错
近期在适配华为AGC的Cloud DB服务,前期已经尝试了Android和iOS端的集成,近期在开始体验Server端的集成。我们选择的是华为提供的Server 端的Java SDK,同时我们还集成了认证服务,但是运行的时候,一直报TLS_ECDHE_ECDSA_WITH_AES_256_6CM_SHA384的错误。
Mayism
2021-04-15
扫描关注获取更多 AppGallery 的相关信息
服务商推荐 更多 >
北京蓝色光标数字传媒科技有限公司
蓝瀚互动
专注于为出海企业提供全套价值链服务,包括海外市场洞察、品牌营销策略、创意设计、广告优化、 账户管理、全球KOL营销、粉丝页运营等一站式整合营销服务,满足出海广告主的多元化需求。
推广
百度国际MediaGo
百度国际MediaGo
百度国际是百度极具战略意义的海外业务发展部门,拥有超过10年的出海经验。旗下出海营销平台MediaGo旨在为全球广告主提供营销整合方案。成立以来,MediaGo不断进化,在磨炼一站式海外营销服务能力的同时,连接Snapchat、Pinterest、Reddit等优质海外平台,成为连接广告主与价值洼地的桥梁。
本地化变现推广
北京易掌云峰科技有限公司
环信即时通讯云
环信,国内领先的即时通讯、在线客服、智能客服机器人提供商。
云服务
iGlobe Advisory Inc.
爱个萝卜本地化 iGlobe
爱个萝卜总部位于加拿大温哥华,为游戏出海提供所有主要语言的母语级本地化翻译,并由专业项目经理为您保驾护航。并可向全球游戏伙伴提供全方位服务,包括目标市场开拓策略,以及各国本地化运营项目监督。
本地化
厦门比朋科技股份有限公司
比朋科技股份
云服务,软件服务,定制开发
云服务外包源码
福建博士通信息有限责任公司
博士通云通讯
福建博士通信息有限责任公司专注于融合短彩信运营、互联网精准投放、语音服务、流量营销、物联网卡等多种专业的通讯能力,为金融、互联网、汽车、物流、教育、游戏、公共服务等多个领域机构提供专业的融合通讯服务和系统平台定制化开发。公司成立于1999年,总部坐落于福州,在北京、上海、深圳、成都、山东等地建立了分公司和办事处。
云服务
扫码登录
打开扫一扫, 关注公众号后即可登录/注册
加载中
二维码已失效 请重试
刷新
账号登录/注册
小程序
公众号
商务合作
投稿采访
出海管家