【Serverless】Unity快速集成认证服务实现邮件登录
概述:
认证服务可以为您的应用快速构建安全可靠的用户认证系统,您只需在应用中访问认证服务的相关能力,而不需要关心云侧的设施和实现。
本次将带来如何使用Unity编辑器快速集成认证服务SDK并实现邮箱地址登录。
集成准备
Unity环境配置
下载Unity Hub,安装Unity编辑器、VS2019、Android平台工具、Documentation。
创建好Unity工程后,Android环境配置如图:
Edit-Preferences-External Tools配置好之前下载的Android SDK。
Edit-Project Settings-Player-Other Settings配置包名。
AGC环境配置
1、在AGC创建项目和应用
2、开通认证服务,其中这次演示使用邮箱登录的方式,所以启用邮箱地址的认证方式
3、返回项目设置界面,下载最新的Json文件,将下载好的Json文件放到项目Assets\Resources目录下;
集成认证服务和云数据库SDK。下载AGC Unity SDK并在项目的“Resources/AGConnect”文件夹下添加DLL依赖项。
布局设计
本次演示的Demo是需要用户输入邮箱地址和密码进行注册,然后输入邮箱验证码完成注册与登录。
Demo主要有三个界面布局,是玩家登录界面、游戏创建/加入界面和游戏对局界面,下面是三个布局界面的展示截图。
登录界面
输入邮箱验证码界面
登录完成界面
功能实现
调用AGConnectAuth.RequestVerifyCodeAsync申请邮箱注册的验证码。该验证码将发送给用户邮箱,确保该邮箱为用户本人所有,同时跳转至输入验证码界面。
public async void OpenVerifyPanel()
{
VerifyCodeSettings settings = new VerifyCodeSettings.Builder()
.SetAction(VerifyCodeSettings.ActionRegisterLogin)
.SendInterval(30)
.SetLang("en-US")
.Build();
Task<VerifyCodeResult> verifyCodeResultTask =
AGConnectAuth.Instance.RequestVerifyCodeAsync(Email.GetComponent<TMP_InputField>().text, settings);
try
{
await verifyCodeResultTask;
}
catch (System.Exception)
{
if (verifyCodeResultTask.Exception.InnerException is AGCException exception)
Debug.Log(exception.ErrorMessage);
else Debug.Log(verifyCodeResultTask.Exception.InnerException.ToString());
}
LoginPanel.SetActive(false);
Verify.SetActive(true);
}

调用AGConnectAuth.CreateUserAsync注册用户。注册成功后,用户自动登录,无需再次调用登录接口。
public async void Register()
{
EmailUser emailUser = new EmailUser.Builder()
.SetEmail(Email.GetComponent<TMP_InputField>().text)
.SetVerifyCode(VerifyCode.GetComponent<TMP_InputField>().text)
.SetPassword(Password.GetComponent<TMP_InputField>().text)
.Build();
Task<ISignInResult> createUserTask = AGConnectAuth.Instance.CreateUserAsync(emailUser);
try
{
await createUserTask;
var result = createUserTask.Result;
var user = AGConnectAuth.Instance.GetCurrentUser();
Verify.SetActive(false);
LoginSuccessful.SetActive(true);
}
catch (System.Exception)
{
if (createUserTask.Exception.InnerException is AGCException exception)
Debug.Log(exception.ErrorMessage);
else
Debug.Log(createUserTask.Exception.InnerException.ToString());
Verify.SetActive(false);
LoginUnsuccessful.SetActive(true);
}
}

邮箱地址+密码登录
public async Task<bool> Login(string email, string password)
{
if (AGConnectAuth.Instance.GetCurrentUser() == null)
{
try
{
IAGConnectAuthCredential credential = EmailAuthProvider.CredentialWithPassword(email, password);
var result = await AGConnectAuth.Instance.SignInAsync(credential);
Debug.Log("Login Successful");
return true;
}
catch (AGCAuthException ex)
{
Debug.LogError("Login Failed: " + ex.ErrorMessage);
return false;
}
catch (System.Exception ex)
{
Debug.LogError("Login Failed: " + ex.Message);
return false;
}
}
else
{
Debug.LogError("User Already Logged In");
return true;
}
}

账号登出代码
public void SignOut()
{
_dbConnect.CloseZone();
AGConnectAuth.Instance.SignOut();
LoginSuccessful.SetActive(false);
LoginPanel.SetActive(true);
}

功能测试
点击File-Build Settings,选择Android平台,点击Build And Run,打包APK,然后在设备中进行安装。
1、输入邮箱号和密码,点击“Register”进行注册
2、输入注册邮箱收到的验证码,点击“Verify“进行注册登录,进入登陆成功界面
3、在AGC控制台可以查看已注册的账号。
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh
【Serverless】Unity快速集成认证服务实现邮件登录的更多相关文章
- 【Serverless】快速集成云函数HarmonyOS
1.学习目标 什么是AppGallery Connect云函数 云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,可以帮助开发者大幅简化应用开 ...
- 如何在 Xamarin 中快速集成 Android 版认证服务 - 邮箱地址篇
Xamarin 作为微软提供的移动服务多系统开发平台,成为很多开发者首选的应用开发平台.AppGallery Connect(以下简称 AGC)也在逐步的支持 Xamarin 的 SDK.认证服务也是 ...
- 如何在Xamarin中快速集成Android版认证服务-手机号码篇
Xamarin作为微软提供的移动服务多系统开发平台,成为很多开发者首选的应用开发平台.AppGallery Connect(以下简称AGC)也在逐步的支持Xamarin的SDK.认证服务也是支持Xam ...
- ABP集成WIF实现单点登录
ABP集成WIF实现单点登录 参考 ojlovecd写了三篇关于WIF文章. 使用WIF实现单点登录Part III —— 正式实战 使用WIF的一些开源示例. https://github.com/ ...
- 如何通过Gitalk评论插件,5分钟为你的博客快速集成评论功能
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- Spring Boot快速集成kaptcha生成验证码
Kaptcha是一个非常实用的验证码生成工具,可以通过配置生成多样化的验证码,以图片的形式显示,从而无法进行复制粘贴:下面将详细介绍下Spring Boot快速集成kaptcha生成验证码的过程. 本 ...
- 利用本地HTTPS模拟环境为FastAPI框架集成FaceBook社交三方登录
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_174 提起社交,就不得不说马克·扎克伯格(Mark Zuckerberg)一手创办的社交网络(FaceBook).进入2020年, ...
- Ink – 帮助你快速创建响应式邮件(Email)的框架
Ink 可以帮助你快速创建响应的 HTML 电子邮件,可工作在任何设备和客户端.这个 CSS 框架帮助您构建可在任何设备上阅读的 HTML 电子邮件.曾经需要你兼顾各种邮件客户端的日子一去不复返了,I ...
- 快速集成iOS基于RTMP的视频推流
前言 这篇blog是iOS视频直播初窥:<喵播APP>的一个补充. 因为之前传到github上的项目中没有集成视频的推流.有很多朋友简信和微博上问我推流这部分怎么实现的. 所以, 我重新集 ...
- 快速集成图片浏览器快速集成图片浏览器->MJPhotoBrowser的使用
介绍: 一个比较完整的图片浏览器,高仿了新浪微博的图片浏览效果,功能包括:下载浏览互联网图片,点击缩略图全屏显示图片.当加载较大图片时会出现圆形进度条,滑动浏览所有图片.保存图片到本地相册.GIF图片 ...
随机推荐
- Springboot pageHelper总结
Springboot上使用pageHelper总结 1. 在pom.xml 中引入依赖 <!--pagehelper--> <dependency> <groupId&g ...
- Dart 2.18 正式发布
互操作性增强.平台特定的网络组件.优化类型推断,以及空安全语言里程碑的近期更新 文/ Michael Thomsen, Google Flutter & Dart 产品经理 Dart 2.18 ...
- 记一次Linux光盘救援
最近遇到一个zz把/etc/profile改坏了导致系统起不来,所以复习一下光盘救援 工具:vm-workstation,centos6 原系统盘起不来后,插入有救援工具的系统盘后 按照提示进入she ...
- 跟羽夏学 Ghidra ——初识
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...
- 一文总结高并发大数据量下MySQL开发规范【军规】
在互联网公司中,MySQL是使用最多的数据库,那么在并发量大.数据量大的互联网业务中,如果高效的使用MySQL才能保证服务的稳定呢?根据本人多年运维管理经验的总结,梳理了一些核心的开发规范,希望能给大 ...
- 关于thinkphp5.1(tp5.1)中sum计算结果不精确、不准确的问题
使用sprintf函数处理,虽然原理没搞懂,但是问题解决了 复现: test表中有两列,值分别是-0.33和10,数据类型是float SELECT SUM(`val`) AS tp_sum FROM ...
- mpdf导出pdf,中文符号乱码
改源码: 打开vendor/mpdf/mpdf/src/Config/FontVariables.php 在最后一行加入: "gb" => [ 'R' => 'gb.t ...
- SC命令---安装、开启、配置、关闭windows服务 bat批处理
一.直接使用cmd来进行服务的一些操作 1.安装服务 sc create test3 binPath= "C:\Users\Administrator\Desktop\win32srvDem ...
- ELK 性能优化实践 ---总结篇
版本及硬件配置 JDK:JDK1.8_171-b11 (64 位) ES集群:由3台16核32G的虚拟机部署 ES 集群,每个节点分配 20 G 堆内存 ELK版本:6.3.0 垃圾回收器:ES 默认 ...
- [题解] Topcoder 15279 SRM 761 Div 1 Level 3 SpanningSubgraphs DP,容斥
题目 考虑DP.\(f(msk,i)\) 表示集合 \(msk(一定包含0号点)\) ,选了恰好i条边的连通方案数.转移用容斥,用这个点集内部所有连边方案减去不连通的.令\(|e_{msk}|\)表示 ...