Android客户端接入

本文为您介绍了Android客户端如何接入短信验证码功能。

接入步骤

下载SDK

登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,根据页面提示下载并解压对应SDK。

创建认证方案

您导入项目或调用API接口时,会用到方案Code等参数信息,请先在号码认证产品控制台创建认证方案,获取方案Code等参数信息。

导入项目

  1. 控制minSdkVersion。

    说明

    短信认证SDK最低依赖版本为16,因此创建新项目minSdkVersion不能低于16。

    28

  2. 导入aar产物并添加依赖。

    在使用短信认证功能的module中引入相关SDK,即将相关aar导入module libs文件夹。57

    modulebuild.gradle文件中找到dependencies,添加如下引用:

    implementation fileTree(dir: 'libs', include: ['*.aar'])

    58

交互流程详解

完整的功能交互流程请参见短信认证的交互流程

SDK方法说明

获取实例(SmsAuthHelper)

/**
 *  初始化SDK实例
 *  @param  context 上下文,不能为空
 *  @param  sceneCode 方案号,必传字段
 */
public SmsAuthHelper(Context context, String sceneCode)

使用示例

mSmsAuthHelper = new SmsAuthHelper(this, BuildConfig.SCENE_CODE);

设置Token更新监听回调

public void setTokenUpdater(TokenUpdater tokenUpdater) 

试用示例

mSmsAuthHelper.setTokenUpdater(new TokenUpdater() {
            @Override
            public Tokens updateToken() {
                return null;
            }
        });

发送短信验证码

/**
     * 发送短信验证码
     *
     * @param countryCode  国际电话区号,目前仅作为保留字段,当前版本只支持86(即中国大陆的电话号码)
     * @param phoneNumber  手机号
     * @param callback     获取验证码监听回调
     * @param timeoutMills 接口超时时间(单位:ms)
     */
public void sendVerifyCode(int countryCode,
                           String phoneNumber,
                           SmsCallback callback, long timeoutMills)

使用示例

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);

其他接口说明

清空本地SmsTokens缓存

   /**
     * 清空本地缓存的Token信息
     */
    public void clearToken() 

使用示例

mSmsAuthHelper.clearToken();

SmsTokens实体类


/**
 * Sms Token
 */
private String stsToken;

/**
 * 临时AccessKeyId
 */
private String accessKeyId;

/**
 * 临时AccessKey Secret;
 */
private String accessKeySecret;

/**
 * Biz Token
 */
private String BizToken;

/**
 * Token过期时间,绝对时间,单位ms
 */
private long expiredTimeMills;

SDK回调说明

SDK发送短信验证码时需要用到BizToken、StsToken(包含AccessKey信息)这两个Token。调用方法详情请参见GetSmsAuthTokens

public interface TokenUpdater {
    /**
     * 更新Token
     * @return
     */
    Tokens updateToken();
}
重要

SDK在检测到本地缓存中无有效Token(Token不存在或者已过期)时,则调用updateToken方法,开发者需要实现该接口,并且获取到Token后,封装成SmsTokens返回给SDK。