随着Flutter逐渐的被越来越多的公司所采用,本文将演示如何将中国移动统一认证SDK接入到Flutter应用中。
目录
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
查看评论