本文为您介绍Android客户端本机号码校验的集成方法及接口的功能示例。
在使用过程中如有疑问,可以提交工单联系阿里云技术工程师处理。
接入步骤
下载SDK
登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,根据页面提示下载并解压对应SDK。
创建认证方案
您导入项目或调用API接口时,会用到方案Code等参数信息,请先在号码认证产品控制台,创建认证方案,获取方案Code等参数信息。
导入项目
设置minSdkVersion和compileSdkVersion版本。
minSdkVersion:号码认证SDK最低依赖版本为21,创建新项目时minSdkVersion不能低于21。
compileSdkVersion:号码认证SDK最低依赖版本为30,创建新项目时compileSdkVersion不能低于30。
导入aar产物并添加依赖。
在使用号码认证功能的module中引入相关SDK,将3个aar全部导入
module libs
文件夹。authsdk是号码认证主aar,实现一键登录及本机号码校验功能;
logger组件是authsdk使用的日志组件必须引入依赖;
main组件是authsdk使用的基础功能组件必须引入依赖;
在module下build.gradle文件中找到
dependencies
,添加如下引用:implementation fileTree(dir: 'libs', include: ['*.aar']) implementation 'androidx.appcompat:appcompat:1.3.1'
创建签名文件。
参考studio创建签名文件创建签名文件,此签名文件在创建方案号时使用,签名文件放置在module下,文件名及文件路径无设置要求。
以Demo为例,将签名文件放置在
app/sig-adaptation/debug/
文件夹下,则需在module的build.gradle
文件中指向该签名。查看签名。
使用Studio右侧面板,选择Gradle > 项目名称 > 签名文件module > Tasks > android > signingReport,查看签名。
说明包签名获取方式如下:
方式一:上图的下方输出的MD5值移除冒号,将大写字母转换为小写字母即可生成包签名。
方式二:请通过手机终端下载并安装Android App签名获取工具,获取Android App的包签名信息。
添加权限
在AndroidMainfest.xml清单文件中添加权限。
必要权限(aar中已申请,用户无需单独配置)
<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络访问 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 检查wifi网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 检查网络状态 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 允许修改网络状态 -->
非必要权限(不配置此权限,不影响使用本机号码校验功能)
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!--允许访问电话状态-->
完整的功能交互流程请参见本机号码校验交互流程。
SDK方法说明
获取认证实例
/**
* 获取该类的单例实例对象
* @param context Android上下文建议使用applicationcontext
* @param tokenListener 需要实现的获取token回调
* @return 单例实例对象
*/
public static PhoneNumberAuthHelper getInstance(Context context, TokenResultListener tokenResultListener)
使用示例
TokenResultListener mTokenResultListener = new TokenResultListener() {
@Override
public void onTokenSuccess(String s) {
//token获取成功业务处理
}
@Override
public void onTokenFailed(String s) {
//token获取失败业务处理
}
};
PhoneNumberAuthHelper mPhoneNumberAuthHelper = PhoneNumberAuthHelper.getInstance(this, mTokenResultListener);
必调方法:设置SDK密钥(setAuthSDKInfo)
/**
* 初始化SDK调用参数,App生命周期内调用一次
* @param secretInfo AppID、AppKey、方案号
*/
public void setAuthSDKInfo(String secretInfo)
使用示例
mPhoneNumberAuthHelper.setAuthSDKInfo(secretInfo);
必调方法:本机号码校验获取Token(getVerifyToken)
使用前先调用setAuthListener接口。
/**
* 获取认证Token
*
* @param totalTimeout 超时时间,单位ms
*/
public void getVerifyToken(final int totalTimeout)
使用示例
mPhoneNumberAuthHelper.setAuthListener(mVerifyListener);
mPhoneNumberAuthHelper.getVerifyToken(5000);
选调方法:加速获取本机号码校验Token(accelerateVerify)
/**
* 加速本机号码校验
*
* @param overdueTimeMills 超时时间ms
* @param listener 结果回调
*/
@AuthNumber
public void accelerateVerify(final int overdueTimeMills, final PreLoginResultListener listener)
使用示例
mPhoneNumberAuthHelper.accelerateVerify(timeout, new PreLoginResultListener() {
@Override
public void onTokenSuccess(String vendor) {
//加速成功业务逻辑处理
}
@Override
public void onTokenFailed(String vendor, String errorMsg) {
//加速失败业务逻辑处理
}
});
本机号码校验示例
////1、创建实例
mVerifyListener = new TokenResultListener() {
@Override
public void onTokenSuccess(String s) {
//token获取成功业务处理
}
@Override
public void onTokenFailed(final String s) {
//token获取失败业务处理
}
};
mPhoneNumberAuthHelper = PhoneNumberAuthHelper.getInstance(getApplicationContext(), mVerifyListener);
//2、环境校验
mPhoneNumberAuthHelper.checkEnvAvailable(PhoneNumberAuthHelper.SERVICE_TYPE_AUTH);
//3.1加速校验
mPhoneNumberAuthHelper.accelerateVerify(5000, new PreLoginResultListener() {
@Override
public void onTokenSuccess(String vendor) {
//加速成功业务逻辑处理
}
@Override
public void onTokenFailed(String vendor, String errorMsg) {
//加速失败业务逻辑处理
}
});
//3.2、 获取校验token
mPhoneNumberAuthHelper.setAuthListener(mVerifyListener);
mPhoneNumberAuthHelper.getVerifyToken(timeout);
//4、去自己服务端进行token校验
//开发者自己app的服务端对接阿里号码认证,并提供接口给app调用
//此处调用服务接口将本机号码校验token以及手机传递过去