admin管理员组

文章数量:1614997

本机号码一键登录基本成为各个 APP 的标配了。

传统的手机验证码登录方式:

  1. 输入手机号;
  2. 前端判断手机号是否有效;
  3. 后台判断手机号是否有效;
  4. 借助第三方下发手机验证码;
  5. 前端有一个倒计时,防止验证码过期输入;
  6. 手机收到验证码;
  7. 复制粘贴输入验证码校验;
  8. 将信息发给后台接口,验证手机号和验证码是否正确,然后才是注册和登录流程,下发认证 Auth 信息。

这一套流程下来足够费劲了。而上述的「本机号码一键登录」完全无感,只要一点按钮,所有操作一步到位。

今天我们来说一说如何利用「极光」做到「本机号码一键登录」的。

开通「极光认证」

开通「极光认证」,需要先完成实名认证,实名认证后可以领取 1,000 次极光认证礼包。

认证成功后,填入 android 和 iOS 包名、签名等信息。

开通后,即可领取免费使用次数。

注:签名生成工具 apk 包下载链接:https://res.wx.qq/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk

安装极光认证插件

看过之前文章的朋友应该知道我们公司的 APP 是基于 Flutter 开发的,而且用到极光的推送插件:《推荐一款 Flutter Push 推送功能插件》https://mp.weixin.qq/s/l0_lghnp7ECRRO9YswWWSw。

这里我们还是使用极光认证提供的 Flutter 插件,根据官方提供的安装方法有 github 源代码集成和 pub 集成,这里我推荐 pub 集成方法:

dependencies:
  jverify: 0.6.1

插件功能

有了插件,接下来就可以写功能了。先来看看插件都提供哪些功能,这里我们主要看 Flutter 插件源码,

具体包括:

  1. setup
  2. setDebugMode
  3. isInitSuccess
  4. checkVerifyEnable
  5. getToken
  6. verifyNumber
  7. loginAuth
  8. loginAuthSyncApi
  9. preLogin
  10. dismissLoginAuthView
  11. setCustomUI (注释掉了该功能)
  12. setCustomAuthViewAllWidgets
  13. clearPreLoginCache
  14. setCustomAuthorizationView

极光认证提供了两个方向性的功能:验证手机号和一键登录功能,今天我们主要是用到一键登录功能,整个插件使用流程大致是这样的:

主要用到的核心功能有:

  1. setup
  2. setDebugMode
  3. isInitSuccess
  4. checkVerifyEnable
  5. preLogin
  6. setCustomAuthViewAllWidgets
  7. loginAuth

每个功能都挺好理解的,可以过一遍代码。

  /// 统一 key
  final String f_result_key = "result";
  /// 错误码
  final  String  f_code_key = "code";
  /// 回调的提示信息,统一返回 flutter 为 message
  final  String  f_msg_key  = "message";
  /// 运营商信息
  final  String  f_opr_key  = "operator";
  
  final Jverify jverify = new Jverify();

setup

由于我的 APP 是 Flutter 一套开发的,所以在用 setup() 时带上 appKeychannel 属性,Android 则在配置文件中配置。

在 /android/app/build.gradle 中添加极光上创建应用的配置信息,我之前用到极光推送了,用的同一个应用。

// 注册极光认证
jverify.setup(
    appKey: "6592925ae1*****658473",//"你自己应用的 AppKey",
    channel: "devloper-default");

setDebugMode

这个简单,就是是否需要 debug 模式,在开发中建议打开,你也可以创建一个全局变量,在开发中默认打开,在打包 release 模式下是关闭的,避免在 APP 开发过程和打包过程中反复去修改这个状态

jverify.setDebugMode(isDebug); // 是否打开调试模式

isInitSuccess

判断 sdk 初始换是否成功:

jverify.isInitSuccess().then((map) {
  bool result = map[f_result_key];
  setState(() {
    if (result) {
      _result = "sdk 初始换成功";
    }else {
      _result = "sdk 初始换失败";
    }
  });

checkVerifyEnable

判断当前的手机网络环境是否可以使用认证。

jverify.checkVerifyEnable().then((map) {
  bool result = map[f_result_key];
  setState(() {
    if (result) {
      _result = "当前网络环境【支持认证】!";
    }else {
      _result = "当前网络环境【不支持认证】!";
    }
  });
});

以上的几个方法基本都是在 sdk 初始化和验证是否可以满足一键登录条件。

preLogin

当环境满足一键登录后,我们就开始进行一键登录操作了&

本文标签: 极光本机一键插件号码