号码认证服务PNVS

    Android_SDK

    概述

    本项目是一款在Android系统上实现手机号码一键登录的SDK。此SDK具备风险设备检测、运营商一键登录等多种功能。

    准备工作

    1. 在使用此SDK之前,需要开发者将宿主APK提供给本项目接口人进行后台配置。配置完成后生成对应appkey、seckey字段,在此SDK初始化时使用。
    2. 鉴权和认证

      要使用百度智能云产品,您需要拥有一个百度智能云账号和一个有效的 AK(Access Key ID)、SK(Secret Access Key)用来进行签名认证。

      可以通过如下步骤获得并了解您的AK/SK信息:

      1. 注册百度智能云账号
      2. 创建AK/SK

    集成步骤

    此SDK对外提供两个版本供宿主集成:标准版、精简版。 标准版:同时集成移动、电信运营商一键登录SDK,具备完整的一键登录能力。 精简版:需要宿主提前集成移动、电信运营商一键登录SDK并完成相关配置,此SDK提供对已集成SDK的调用能力。

    标准版集成步骤

    第一步:下载对应标准版SDK。

    第二步:将aar导入到libs目录下。

    第三步:在build.gradle配置aar依赖。

    dependencies  {
    //name 为 libs 目录下.aar 文件名称,ext 为.aar 的扩展名
    implementation(name: 'embed_ssolibrary-haotian-debug', ext: 'aar')}

    精简版集成步骤

    第一步:从移动、电信运营商官网下载最新版一键登录SDK并集成。

    第二步:下载对应精简版SDK。

    第三步:将aar导入到libs目录下。

    第四步:在build.gradle配置aar依赖。

    dependencies  {
    //name 为 libs 目录下.aar 文件名称,ext 为.aar 的扩展名
    implementation(name: 'ssolibrary-haotian-debug', ext: 'aar')}

    so包配置

    aar包中包含了armeabi,armeabi-v7a,arm64-v8a,x86的so包,如果集成的App自身兼容的abi种类少于本aar,应当在build.gradle文件中,加入ndk的abiFilter配置,选定本app支持的abi,以防止引入全部4种abi的so导致在指定abi上缺失其他so文件。

    defaultConfig {
      ...
      ndk {
        abiFilter "armeabi"
      } 
      ...
    }

    API接口

    初始化接口

    宿主程序启动后在应用的Application类的onCreate中调用初始化接口: HTSSOManager.init(Context context, String appkey, String seckey); 宿主程序需要确保在使用一键登录功能的进程中初始化本SDK。

    参数说明

    String appkey、String seckey:用于服务器的访问校验,是本SDK的渠道凭证,集成之前需要向接口人申请。这两个 key 是和集成宿主的包名和签名唯一关联的。如果包名或者签名有变化需要重新申请。

    用户授权隐私协议状态设置接口

    初始化时根据用户对隐私协议授权行为设置对应状态。 HTSSOManager.setUserAuthPrivacyState(Context context, boolean state);

    参数说明

    1. Context context:上下文环境。
    2. boolean state:用户同意隐私协议时设置为true,拒绝时设置为false。

    一键登录接口

    在需要使用一键登录功能的Activity中调用此接口,并传入对应回调对象。在调用此接口时,必须确保已调用初始化接口。

    HTSSOManager.authLogin(Context ctx, new HTSSOManager.IHTSSOLoginListener () {
               @Override
               public void onFinish(String info) {
                   Log.d("MAIN", "onFinish->info=" + info);
               }
           });

    参数说明

    1. Context ctx:为确保登录成功,此处必须传入当前Activity实例。
    2. HTSSOManager.IHTSSOLoginListener listener:登录结果回调接口。

    注意:首次使用运营商一键登录时,必须开启对应运营商数据流量。

    登录结果回调接口

    登录结果在如下对象接口中回调:

    new HTSSOManager.IHTSSOLoginListener () {
               @Override
               public void onFinish(String info) {
               }
           });

    参数说明

    1. String info:回调登录结果json字符串。
    2. 结果json内容及含义:
    参数 类型 说明
    “0” int 主状态码,见“状态码说明”
    “1” int 副状态码,见“状态码说明”
    “2” String 运营商标识,“1”:移动,“2”:联通,“3”:电信,“-1”:无法获取运营商标识
    3 String 登录结果,登录成功时为json格式,登录失败时为提示信息。
    1. 登录成功json内容及含义:
    参数 类型 说明
    “data” String 主状态码,见“状态码说明”
    “errno” String 提示内容,登录成功为空。
    “msg” String 运营商标识,“1”:移动,“2”:联通,“3”:电信,“-1”:无法获取运营商标识
    “request_id“ String 请求id,用于排查问题

    返回状态码说明

    返回状态码分为主状态码和副状态码两部分,主状态码用于区分各主要流程执行状态。副状态码用于具体流程中的具体执行状态。

    主状态码说明

    主状态码 主状态码说明
    0 成功执行一键登录
    1 设备风险验证状态码
    2 运营商 sdk 返回状态码
    3 号码认证 sdk 执行状态码
    4 号码认证服务端响应状态码

    副状态码说明

    1. 当主状态码为0时:
    返回副状态码 副状态说明
    0 成功执行一键登录
    1. 当主状态码为1时:
    副状态码 副状态码说明
    999 该设备存在风险
    1. 当主状态码为2时:
    副状态码 副状态码说明
    移动、电信SDK返回状态码 见附录移动、电信运营商状态码说明
    1. 当主状态码为3时:
    返回副状态码 副状态码说明
    2001 号码认证SDK未初始化
    2002 宿主未集成运营一键登录SDK
    2003 当前设备无网络连接
    2004 当前设备无运营商sim卡
    2006 当前宿主无运营商配置信息
    2008 当前宿主运营商不支持一键登录
    2009 未知错误
    998 当前用户正在登陆
    2004 当前设备无运营商sim卡
    2006 当前宿主无运营商配置信息
    2016 运营商SDK版本错误
    1. 当主状态码为4时:
    返回副状态码 副状态码说明
    2005 号码认证服务端返回信息为空
    2010 参数错误
    2011 应用未配置或已停用
    2012 token转号码错误
    2013 号码获取uid错误
    2014 uid 获取小程序信息错误
    2015 附带号码请求风控失败

    附录

    移动一键登录SDK状态码

    状态码 说明
    103000 成功
    102507 登录超时(授权页点登录按钮时)
    103101 请求异常
    103102 包签名错误(社区填写的appid和对应的包名包签名必须一致)
    103111 错误的运营商请求(可能是用户正在使用代理或者运营商判断失败导致)
    103119 appid不存在
    103211 其他错误,联系技术支撑解决问题
    103412 无效的请求(1.加密方式错误;2.非json格式;3.空请求等)
    103414 参数校验异常
    103511 服务器ip白名单校验失败
    103811 token为空
    103902 scrip失效(短时间内重复登录)
    103911 token请求过于频繁,10分钟内获取token且未使用的数量不超过30个
    104201 token已失效或不存在(重复校验或失效)
    105001 联通取号失败
    105002 移动取号失败
    105003 电信取号失败
    105012 不支持电信取号
    105013 不支持联通取号
    105018 token权限不足(使用了本机号码校验的token获取号码)
    105019 应用未授权(未在开发者社区勾选能力)
    105021 当天已达取号限额
    105302 appid不在白名单
    105312 余量不足(体验版到期或套餐用完)
    105313 非法请求
    200005 用户未授权(READ_PHONE_STATE)
    200010 无法识别sim卡或没有sim卡(android)
    200015 短信验证码格式错误
    200020 用户取消登录
    200021 数据解析异常
    200022 无网络
    200023 请求超时
    200024 数据网络切换失败
    200025 未知错误一般出现在线程捕获异常,请配合异常打印分析
    200026 输入参数错误
    200027 未开启数据网络或网络不稳定
    200028 网络异常
    200038 异网取号网络请求失败
    200039 异网取号网关取号失败
    200040 UI资源加载异常
    200048 用户未安装sim卡
    200050 EOF异常
    200060 切换账号(未使用SDK短验时返回)
    200072 CA根证书校验失败
    200080 本机号码校验仅支持移动手机号
    200082 服务器繁忙
    200087 授权页成功调起

    电信一键登录SDK状态码

    状态码 说明
    0 请求成功
    64 permission-denied(无权限访问)
    65 API-request-rates-Exceed-Limitations(调用接口超限)
    10001 取号失败
    10002 参数错误
    10003 解密失败
    10004 ip受限
    10005 异网取号回调参数异常
    10006 Mdn取号失败,且属于电信网络
    10007 重定向到异网取号
    10008 超过预设取号阈值
    10009 时间戳过期
    20005 sign-invalid(签名错误)
    20006 应用不存在
    20007 公钥数据不存在
    20100 内部解析错误
    20102 加密参数解析失败
    30001 时间戳非法
    30003 topClass失效
    51002 参数为空
    51114 无法获取手机号数
    80000 请求超时
    80001 请求网络异常
    80002 响应码错误
    80003 无网络连接
    80004 移动网络未开启
    80005 Socket超时异常
    80006 域名解析异常
    80007 IO异常
    80008 No route to host
    80009 nodename nor servname provided, or not known
    80010 Socket closed by remote peer
    80100 登录结果为空
    80101 登录结果异常
    80102 预登录异常
    80103 SDK未初始化
    80104 未调用预登录接口
    80105 加载 nib 文件异常
    80200 用户关闭界面
    80201 其他登录方式
    80800 WIFI 切换异常
    80801 WIFI 切换超时
    上一篇
    接入流程
    下一篇
    IOS SDK