当前位置:主页 > 查看内容

中国移动一键登录 —— Flutter(安卓)

发布时间:2021-07-06 00:00| 位朋友查看

简介:随着Flutter逐渐的被越来越多的公司所采用本文将演示如何将中国移动统一认证SDK接入到Flutter应用中。 ? 目录 1.准备工作 2.开始接入 3.运行调试 4.注意事项 1.准备工作 1.1 下载好统一认证SDK这里使用的版本是quick_login_android_5.8.1 1.2 在移动开发平台……

随着Flutter逐渐的被越来越多的公司所采用,本文将演示如何将中国移动统一认证SDK接入到Flutter应用中。

?

目录

1.准备工作

2.开始接入

3.运行调试

4.注意事项


1.准备工作

1.1 下载好统一认证SDK,这里使用的版本是quick_login_android_5.8.1

1.2 在移动开发平台申请好应用拿到appid、appkey

2.开始接入

2.1 按照统一认证SDK接入文档配置好权限,READ_PHONE_STATE权限根据应用方需要选择是否添加,SDK不强制要求授权该权限。

2.2 添加好SDK所需的资源文件

2.3 manifest中配置好授权登录的Activity,这里可以指定授权页的主题为 NoActionBar

授权页style

<style name="AuthPage" parent="@android:style/Theme.Holo.Light.NoActionBar">
        <item name="android:background">@null</item>
        <item name="android:colorBackground">@null</item>
        <item name="android:windowIsTranslucent">true</item>
</style>

2.4 按照文档要求添加network_security_config

2.5 将下载的jar文件添加工程中,并进行依赖。

2.6?MainActivity中初始化中国移动统一认证SDK并调用loginAuth授权方法

public class MainActivity extends FlutterActivity {

  private AuthnHelper mHelper;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    new MethodChannel(getFlutterView(),"TYRZ").setMethodCallHandler(new MethodChannel.MethodCallHandler() {
      @Override
      public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
        if(methodCall.method.equals("loginAuth")){
          loginAuth(result);
        }else{
          Log.e("TYRZ","notImplemented");
          result.notImplemented();
        }
      }
    });

    //创建AuthnHelper实例
    mHelper= AuthnHelper.getInstance(this);
    //打开SDK日志打印开关
    AuthnHelper.setDebugMode(true);
    //初始化授权页主题
    mHelper.setAuthThemeConfig(new AuthThemeConfig.Builder().build());

    GeneratedPluginRegistrant.registerWith(this);

  }

  /**
   * 统一认证SDK授权方法调用
   */
  private void loginAuth(MethodChannel.Result result){
    //调用授权方法,这里要填写的appid、appkey为开发者在移动开发平台申请的appid、appkey
    mHelper.loginAuth("30********73", "2DD524A94*************EA287B7CA0", new TokenListener() {
      @Override
      public void onGetTokenComplete(int i, JSONObject jsonObject) {
        try {

          String resultCode = jsonObject.optString("resultCode","没有返回码!");
          Toast.makeText(MainActivity.this, resultCode, Toast.LENGTH_SHORT).show();
          //将结果回传给flutter
          result.success(resultCode);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
  }}

2.7?main.dart中调用loginAuth

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(

        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  
  //调用java方法
  void loginAuth() async {
    print("按钮点击!");
    try {
      String result = await MethodChannel("TYRZ").invokeMethod("loginAuth");
      //打印统一认证回调的响应码
      print("resultCode = " + result);
    } catch (e) {
      print(e);
    }
  }

  //创建一个按钮,在点击按钮时调用统一认证的loginAuth方法拉起授权页。
  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(

        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text("一键登录"),
              onPressed: () {
                loginAuth();
              },
            ),
          ],
        ),
      ),
    );
  }
}

3.运行调试

3.1 真机调试

3.2 控制台日志

4.注意事项

一定要按照文档将资源文件、权限、network_security_config以及授权页activity配置好。

;原文链接:https://blog.csdn.net/sumsear/article/details/115680451
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:智能家居APP使用指南 下一篇:没有了

推荐图文


随机推荐