登录  /  免费注册

Android-一键登录

KB: 121052

 · 

更新时间:2019-06-17 13:58:30 

SDK说明

本文档为一键登录Android SDK接入文档
号码认证服务Android SDK目前主要提供功能:
(1)设备是否已开启蜂窝数据网络判断,这个是号码网关认证的前提条件
(2)获取一键登录token接口(目前支持中国移动2/3/4G、中国联通3/4G中国电信4G)目前SDK提供aar包。

项目设置

(1)Number Authenticate SDK 获取
  开通服务后,在控制台下载SDK。
  将aar拷贝至工程的libs目录下。
(2)APP工程AndroidManifest.xml增加Activity声明

  1. 2//联通电信授权页
  2. 3)<activity
  3. android:name="com.mobile.auth.gatewayauth.LoginAuthActivity"
  4. android:configChanges="orientation|keyboardHidden|screenSize"
  5. android:exported="false"
  6. android:launchMode="singleTop"
  7. android:screenOrientation="portrait" />
  8. 4//协议页面webview
  9. <activity
  10. android:name="com.mobile.auth.gatewayauth.activity.AuthWebVeiwActivity"
  11. android:configChanges="orientation|keyboardHidden|screenSize"
  12. android:exported="false"
  13. android:launchMode="singleTop"
  14. android:screenOrientation="portrait" />
  15. 6//移动授权页
  16. <activity
  17. android:name="com.cmic.sso.sdk.activity.LoginAuthActivity"
  18. android:configChanges="orientation|keyboardHidden|screenSize"
  19. android:launchMode="singleTop"
  20. android:screenOrientation="portrait" />

(3)混淆keep规则

  1. -keep class cn.com.chinatelecom.gateway.lib.** {*;}
  2. -keep class com.unicom.xiaowo.login.** {*;}
  3. -keep class com.cmic.sso.sdk.** {*;}
  4. -keep class com.mobile.auth.gatewayauth.** {*;}
  5. -keep class android.support.v4.** { *;}
  6. -keep class org.json.**{*;}
  7. -keep class com.alibaba.fastjson.** {*;}

(4)增加fastjson依赖,若已依赖请忽略。

  1. gradle:compile 'com.alibaba:fastjson:1.2.5'
  2. maven:
  3. <dependency>
  4. <groupId>com.alibaba</groupId>
  5. <artifactId>fastjson</artifactId>
  6. <version>1.2.5</version>
  7. </dependency>

lib依赖:直接点击下载

接口简介

  1. /**
  2. * 函数名:getInstance
  3. * @param context
  4. * @param tokenListener
  5. * 返回:PhoneNumberAuthHelper 实例
  6. */
  7. public static PhoneNumberAuthHelper getInstance(Context context, TokenResultListener tokenListener)
  8. /**
  9. * SDK初始化函数,检查终端是否支持号码认证,并读取SIM卡中号码
  10. * @return InitResult
  11. * boolean can4GAuth 是否能支持4g网关认证
  12. */
  13. public InitResult checkAuthEnvEnable()
  14. /**
  15. * 设置SDK是否debug模式运行
  16. * @param isDebug true则输出关键步骤运行日志
  17. */
  18. public void setDebugMode(boolean isDebug);
  19. /**
  20. * 退出登录授权页,授权页的退出完全由APP控制
  21. * SDK完成回调后,不会立即关闭授权页面,需要开发者主动调用离开授权页面方法去完成页面的关闭
  22. */
  23. public void quitAuthActivity();
  24. /**
  25. * 预取号码信息,建议在getLoginToken之前调用,加速授权页打开速度。
  26. * @param overdueTime 预取信息有效期 单位分钟
  27. * @param listener 预取结果回调函数
  28. */
  29. public void preLogin(final int overdueTime, final PreLoginResultListener listener)
  30. public interface PreLoginResultListener {
  31. /**
  32. * @param vendor 返回预取成功运营商
  33. */
  34. void onTokenSuccess(String vendor);
  35. /**
  36. * @param vendor 返回预取失败运营商
  37. * @param ret 返回失败原因
  38. */
  39. void onTokenFailed(String vendor, String ret);
  40. }
  41. /**
  42. * 唤起一键登录授权页面,在用户授权后获取一键登录的Token
  43. * @param totalTimeout 超时时间 单位ms
  44. */
  45. public void getLoginToken (int timeout):
  46. /**
  47. * 动态添加控件
  48. * @param viewID 开发者自定义控件名称
  49. * @param viewConfig 配置开发者自定义控件的控件来源、位置和处理逻辑
  50. */
  51. public void addAuthRegistViewConfig(String viewID, AuthRegisterViewConfig viewConfig)
  52. /**
  53. * 修改授权页面主题,开发者可以通过 此方法修改授权页面主题
  54. * 需在 getLoginToken接口之前调用
  55. * @param authUIConfig 登录授权页UI自定义配配置
  56. */
  57. public void setAuthUIConfig (AuthUIConfig authUIConfig)

Android授权页页面细则

安卓授权页

Android 开发常见问题

为什么经常读取不到sim卡的号码

1.首先并不能100%读取成功,是否能读取成功,需要用户授予“READ_PHONE_STATE”权限。

2.其次SIM卡有物理写入本机号码,而是否写入本机号码,并不是100%,要看发卡机构是否规范。

3.且从sim卡读取出来的本机号码,仅仅只是在读取成功时,去帮忙用户预填手机号至号码输入框,减少用户输入的交互优化,而且用户也是可以去修改预填的号码。

4.最后无论是否读取成功号码,通过服务端进行号码认证是必不可少的,因为仅仅从sim卡读取手机号码,并不能保证其准确性与真实性。

权限问题

若出现权限相关问题,请检查APP的权限是否申请正常。正常引用aar,权限会自动merge。若权限没有merge,需要添加如下权限。

  1. <uses-permission
  2. android:name="android.permission.INTERNET" />
  3. <uses-permission
  4. android:name="android.permission.READ_PHONE_STATE" />
  5. <uses-permission
  6. android:name="android.permission.ACCESS_WIFI_STATE" />
  7. <uses-permission
  8. android:name="android.permission.ACCESS_NETWORK_STATE" />
  9. <uses-permission
  10. android:name="android.permission.CHANGE_NETWORK_STATE" />

号码认证支持的移动网络情况

中国移动支持2G/3G/4G、中国联通支持3G/4G、中国电信支持4G,但2G网络下认证失败率稍高。

Debug包没问题,Release包验证不正常

注意混淆keep规则在proguard-rules.pro文件的增加

移动卡获取token,提示应用合法性校验错误

请检查开发的APK的包名和签名,与阿里云后台创建应用的提交的信息是否一致

如何验证本机号码是否通过认证

终端侧的SDK仅仅是通过用户的移动网络获取token,最终判断用户输入的号码是否是本机号码,需要通过应用服务端带上终端侧获取到的token与用户输入的号码,调用云通信服务端提供的认证API,认证的动作是服务端与服务端之间的通信,SDK不能独立完成。