本文为您介绍短信认证功能Demo的运行步骤及示例代码,帮助您快速了解短信认证功能。Android客户端SDK集成的详细接入步骤及用法,请参见短信认证Android客户端接入。
步骤一:下载SDK
登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,根据页面提示下载并解压对应SDK。
步骤二:打开Demo
使用Android Studio IDE,选择Open,选择解压后SDK文件下的Demo文件夹。项目载入过程会拉取相关依赖,请耐心等待。
本文使用Android Studio 4.0版本进行演示。如果您使用的是其他的IDE版本,可能会存在构建报错,请按照提示修改对应Gradle版本。使用工具和环境搭建相关可参考客户端SDK参考。
步骤三:创建RAM用户
创建RAM用户获取AccessKey ID和AccessKey Secret。
步骤四:创建认证方案
登录号码认证服务控制台,创建短信认证方案,获取方案Code。
查看签名
使用Android Studio右侧面板,Gradle > 项目名称 > 签名文件所在module >Tasks > android > signingReport,查看签名。
Alias: fusionauth
MD5: 5B:A7:F9:33:CD:DD:6C:97:48:7F:08:25:3F:D3:84:22
包签名获取方式如下:
-
方式一:上方代码块输出的MD5值移除冒号,将大写字母转换为小写字母即可生成包签名。
-
方式二:请通过手机终端下载并安装Android App签名获取工具,获取Android App的包签名信息。
查看包名
包名在app/build.gradle文件android.defaultConfig.applicationId属性。
android {
defaultConfig {
applicationId 'com.aliqin.mytel'
}
}
步骤五:参数替换
打开module下的build.gradle文件,补充以下字段:
如果您没有短信模板Code,请在号码认证服务控制台添加模板,待模板审核通过后即可获取模板Code。
buildConfigField "String", "ACCESS_KEY_ID", 'AccessKey Id'
buildConfigField "String", "ACCESS_KEY_SECRET", 'AccessKey Secret'
buildConfigField "String", "SCENE_CODE", '方案号'
buildConfigField "String", "SMS_TEMPLATE_CODE", '短信模板Code'
Demo项目直接在客户端发起了OpenAPI的调用,所以需要填入AccessKey ID 和 AccessKey Secret。在实际业务中,请通过服务端集成完成OpenAPI对接。
步骤六:构建及运行
-
将Android系统的手机连接到电脑上并打开USB调试模式。
-
点击IDE顶部工具菜单
,构建并运行项目。 -
功能试用。
说明确保您的终端设备已开启SIM卡的移动数据网络(支持中国联通、中国移动的3G网络,但接口耗时会增加)。
Demo 项目在手机上的运行效果为手机号+验证码登录界面,包含区号选择器(默认+86)、手机号码输入框、验证码输入框与获取验证码按钮、橙色登录按钮,以及同意《用户隐私协议》复选框。
示例代码
初始化SDK
mSmsAuthHelper = new SmsAuthHelper(this, BuildConfig.SCENE_CODE);
设置Token监听回调
mSmsAuthHelper.setTokenUpdater(new TokenUpdater() {
@Override
public Tokens updateToken() {
//从服务端获取token 该部分为示例伪代码
Tokens tokens = new Tokens();
tokens.setExpiredTimeMills("");
tokens.setBizToken("");
tokens.setAccessKeyId("");
tokens.setAccessKeySecret("");
tokens.setStsToken("");
return tokens;
}
});
获取验证码
mSmsAuthHelper.sendVerifyCode(countryCode, phoneNumber, new SmsCallback() {
@Override
public void onResult(Ret ret) {
if (ret.getCode() == ResultCode.CODE_SUCCESS) {
mVerifyCodeTimerWidget.setClickable(false);
mVerifyCodeTimerWidgetController.startTimer();
mSmsToken = ret.getSmsVerifyToken();
}else {
runOnUiThread(()->{
Toast.makeText(MainActivity.this, "验证码发送失败:"+ret.getMsg(), Toast.LENGTH_SHORT).show();
});
}
}
},5000);