丈夫欲遂平生志,一载寒窗一举汤。这篇文章主要讲述如何在Xamarin中快速集成Android版认证服务-邮箱地址篇相关的知识,希望能为你提供帮助。
Xamarin作为微软提供的移动服务多系统开发平台,成为很多开发者首选的应用开发平台。AppGallery Connect(以下简称AGC)也在逐步的支持Xamarin的SDK。认证服务也是支持Xamarin平台的服务之一,今天就教大家如何在Xamarin里快速集成认证服务的邮箱地址认证。
1.
安装Xamarin环境
Xamarin的御用开发平台是Visual Studio,所以我们需要首先安装Visual Studio 2019.
下载地址:??https://visualstudio.microsoft.com/zh-hans/downloads/??
下载好后进行安装,我们需要安装Xamarin配套的插件,Mobile development with .NET,中文叫“使用.NET的移动开发”,安装完成后就可以通过Visual Studio进行Xamarin的android和ios开发了。
2.
在AGC页面开通认证服务,具体创建与配置骤可以参考认证服务官方文档:??https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-auth-android-getstarted-0000001053053922??
3.
创建Xamarin工程
在Visual Studio中创建新项目,选择移动应用(Xamarin.Forms),将应用的名称等信息设置好后,创建项目
4.
将远程配置的Xamarin包集成到新的项目中
有两种方式集成Xamarin包
第一种是云端方式集成,在目录栏右击选择管理NuGet程序包
在浏览选项中搜索Huawei.Agconnect.Auth,点击安装即可
第二种方式是本地集成NuGet包,首先需要将所有需要的NuGet包放入本地的一个文件夹中,
还是按照第一种的方式打开NuGet包管理器,中岛程序包源边上的设置图标,打开选项目录
点击绿色的加号添加新的包源,在源的地方输入刚刚存放NuGet本地包的文件夹目录即可。
5.
添加AGC配置文件
AGC为开发者准备了一个存放所有应用相关信息的配置json文件,我们需要将这个文件集成到项目中以便后续调用接口时使用,我们的SDK会自动读取里面的内容,无需开发者调用时手动传入了,具体步骤如下
a)
按照第二步文档中的方法从AGC管理台中下载agconnect-services.json文件,将文件放入项目的Assets目录下
b)
在项目中创建一个新的类,HmsLazyInputStreams.cs,将如下代码写入进行json文件的内容读取
using System;
using System.IO;
using Android.Util;
using Android.Content;
using Huawei.Agconnect.Config;
namespace XamarinHmsRemoteConfig
class HmsLazyInputStream : LazyInputStream
public HmsLazyInputStream(Context context) : base(context)
Get(context);
public override Stream Get(Context context)
try
return context.Assets.Open("agconnect-services.json");
catch (Exception e)
Log.Error(e.ToString(), "Cant open agconnect file");
return null;
在主Activity中,我们需要在AttachBaseContext中添加如下代码已读取json文件中的内容
protected override void AttachBaseContext(Context context)
base.AttachBaseContext(context);
AGConnectServicesConfig config = AGConnectServicesConfig.FromContext(context);
config.OverlayWith(new HmsLazyInputStream(context));
c)
设置包名
右击项目找到属性选项,在Android清单页签找到程序包名称,设置应用的包名。
准备工作完成后,我们就可以正式进入开发阶段
对于邮箱地址认证,认证服务SDK提供了两个阶段的操作,一个是注册,另一个是登录。这两个操作都需要用到获取邮件验证码的功能,所以认证服务SDK也提供了发送验证码的功能:
i.
发送验证码的步骤如下:
首先我们需要创建一个VerifyCodeSettings对象,里面包含了发送邮件的相关设置,包括action,语言等
VerifyCodeSettings settings = VerifyCodeSettings.NewBuilder()
.Action(VerifyCodeSettings.ActionRegisterLogin)
.SendInterval(30)
.Locale(Locale.English)
.Build();
复制
读取用户输入的邮箱地址,调用RequestVerifyCodeAsync方法向认证服务服务器请求发送验证码,传入邮箱地址以及刚刚我们创建的setting对象
string email = edtAccount.Text.ToString().Trim();
try
var requestVerifyCode = AGConnectAuth.Instance.RequestVerifyCodeAsync(email, settings);
VerifyCodeResult verifyCodeResult = await requestVerifyCode;
if (requestVerifyCode.Status.Equals(System.Threading.Tasks.TaskStatus.RanToCompletion))
Toast.MakeText(this, "Send email verify code success! ", ToastLength.Short).Show();
catch (Exception ex)
Toast.MakeText(this, ex.Message, ToastLength.Long).Show();
ii.用户获取验证码后就可以开始注册流程了
首先我们需要读取用户的输入并构建一个EmailUser对象,里面存放了邮箱用户的相关信息,包括邮箱地址,验证码和密码。这里用户在创建的时候可以选择是否设置密码,如果设置则后续在登录的时候就需要输入密码。
string email = edtAccount.Text.ToString().Trim();
string password = edtPassword.Text.ToString().Trim();
string verifyCode = edtVerifyCode.Text.ToString().Trim();
// Build e-mail user.
EmailUser emailUser = new EmailUser.Builder()
.SetEmail(email)
.SetPassword(password)//optional,if you set a password, you can log in directly using the password next time.
.SetVerifyCode(verifyCode)
.Build();
EmailUser创建成功后我们就可以调用CreateUserAsync方法创建用户了
try
// Create e-mail user.
var emailUserResult = AGConnectAuth.Instance.CreateUserAsync(emailUser);
ISignInResult signInResult = await emailUserResult;
if (emailUserResult.Status.Equals(System.Threading.Tasks.TaskStatus.RanToCompletion))
// After a user is created, the user has logged in by default.
StartActivity(new Intent(this, typeof(MainActivity)));
catch (Exception ex)
Toast.MakeText(this, "Create User Fail:" + ex.Message, ToastLength.Long).Show();
用户创建完成后,SDK会自动为用户进行登录,无需再调用登录接口了
iii.
对于非首次使用的用户,我们就需要进行登录操作了,基于之前注册时的设置,登录分为两种,验证码登录和密码登录
string email = edtAccount.Text.ToString().Trim();
string password = edtPassword.Text.ToString().Trim();
string verifyCode = edtVerifyCode.Text.ToString().Trim();
IAGConnectAuthCredential credential;
if (TextUtils.IsEmpty(verifyCode))
credential = EmailAuthProvider.CredentialWithPassword(email, password);
else
credential = EmailAuthProvider.CredentialWithVerifyCode(email, password, verifyCode);
SignIn(credential);
try
AGConnectAuth connectAuth = AGConnectAuth.Instance;
var signInResult = AGConnectAuth.Instance.SignInAsync(credential);
ISignInResult result = await signInResult;
if (signInResult.Status.Equals(System.Threading.Tasks.TaskStatus.RanToCompletion))
Log.Debug(TAG, signInResult.Result.ToString());
StartActivity(new Intent(this, typeof(MainActivity)));
Finish();
catch (Exception ex)
Log.Error(TAG, ex.Message);
Toast.MakeText(this, "SignIn failed: " + ex.Message, ToastLength.Long).Show();
我们可以看到,如果是密码登录,我们调用的是CredentialwithPassword来创建一个credential,而验证码登录则是使用CredentialWithVerifyCode来创建credential。而后我们调用SignInAsync方法传入这个credential进行登录的操作。
【如何在Xamarin中快速集成Android版认证服务-邮箱地址篇】以上我们就成功接入了Xamarin版本认证服务中的邮箱地址认证。如果觉得简单那就赶快行动起来试试吧。
参考文档:
xamarin使用入门:??https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-get-started-xamarin??
认证服务-xamarin使用指导:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-auth-xamarin-android-usage-0000001098592850#EN-US_TOPIC_0000001098592850__section17453164515224
推荐阅读
- HarmonyOSJS鸿蒙Js camera怎么拍照并使用image显示出来
- 超简单集成华为HMS MLKit 机器学习服务 银行卡识别SDK,一键实现银行卡绑定
- 超简单集成HMS ML Kit实现最大脸微笑抓拍
- 全网对 STP 生成树协议最全面最优质的总结,网络工程师收藏!
- Linux磁盘管理之(逻辑卷从概念到应用的最佳实践,)
- Harmony OSArkUIDemo关系数据库基本使用
- 版本集成之SVN版本库同步工具:svnsync
- Ubuntu server22.04 ,kubernetes(k8s)1.24.0,congtainerd 1.6.4安装笔记
- Nginx负载均衡中常见的算法及原理有哪些