Flutter阿里巴巴认证插件ali_auth_fplus的使用
Flutter阿里巴巴认证插件ali_auth_fplus的使用
ali_auth 概述
ali_auth
是一个用于阿里云号码认证服务的一键登录插件。该项目支持多种功能,并且由于其后端依赖阿里云服务,因此在后期维护上更为便捷。此插件完全开源且高度可定制化,如果你在使用过程中遇到任何问题,欢迎反馈。如果你认为此插件还不够完善,也可以提出你的宝贵意见。
如果希望在自己的项目中进行自定义修改,请先克隆此插件并本地调整。但请注意,若基于此插件开发其他版本插件,需注明来源并附上此插件的链接,感谢您的配合!
版本升级注意事项
从 0.0.6
版本开始,前端配置参数进行了较大改动。如果你不想修改这些参数,建议不要升级到更高版本,以避免不必要的麻烦。
支持平台
平台 | 支持情况 |
---|---|
Android | YES |
iOS | YES |
代码点击响应
以下是 ali_auth
插件的点击事件响应码及其描述:
响应码 | 描述 |
---|---|
700000 | 点击返回按钮,用户取消免密登录(安卓物理按钮/虚拟返回按钮暂未实现),请自行用 Flutter 替代 |
700001 | 点击切换按钮,用户取消免密登录 |
700002 | 点击登录按钮事件 |
700003 | 点击 check box 事件 |
700004 | 点击协议富文本文字事件 |
700005 | 点击第三方按钮事件 |
使用步骤
- 参考官方文档:阿里云号码认证帮助文档
- 前往阿里云控制台,添加号码认证方案并获取秘钥。
- 使用秘钥初始化插件环境:调用
AliAuthPlugin.initSdk()
方法。
注意事项
1. 针对移动闪退问题:
在示范工程中,需在 pods -> TARGETS -> ali_auth -> Build Settings -> Linking -> Other Linker Flags
中添加 -ObjC
参数(因为 AuthSDK 是通过 Pod 引入的,因此需要此配置,否则可能导致移动端崩溃)。
如下图所示:
2. 不要重复添加 ATAuthSDK.framework
如果在编译时重复添加 ATAuthSDK.framework
,可能会导致未知错误。以下为错误操作示例:
DEMO 示例
以下是完整的代码示例,展示如何集成 ali_auth
插件并实现一键登录功能:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:ali_auth/ali_auth.dart';
import 'package:flutter/services.dart';
import 'dart:io';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
/// 初始化插件
/// 参数说明:
/// sk: 阿里云秘钥
/// config: 配置参数,包含全屏或弹窗模式
final result;
if (Platform.isAndroid) {
result = await AliAuthPlugin.initSdk(
sk: 'uYhNaUWEW+1rV9cq27oAQVWi8qFaF1wKfHr6BjrdnMoyQbtAxIA7q/ToLl1xKGCAwDl66Mii6KXK3FstD+PNcwS0aFCLorOrYHMHed8FX7AT8qu/AlzTXE05g0FmUMb5z1QKCiyvpmP+THs04fCfVtHsYdirkJGcd58r24o3QykIatcZYgd1jB3WAz3HLUqCg4afUK49SggbPdwscSfVV8wcB/hP+ST9kUVD02JmsqLA4YZUCRuUX2+o5AG1UpJwi/OHEccrFyEwuODaFzDSMPVth2pTZEwCB/g3PeLWhUQlWxvRqolgWQ==',
config: getDislogConfig(),
);
} else {
result = await AliAuthPlugin.initSdk(
sk: '6QzZRbemo+1Zm/C6pMyJQ34YZDafH0UCvIUN1hMnHYHnL5Be2MzeRRC2tmWUywNpxWLvqh9kjrRcE7lVVUZFTWCqKvp2VZuvOIOrZIfCxWWcu7YfEDCrlwekJhEh0EGot3tsDcO8pvgLY5nIc7FmiFGdaWDJ8j6mMRkQJ66PC82H5k9ZR8+MTdGC0zH13ToUxzRGP2d3vzNOAFUbzuKnJA6NdndsTb+CzzoBPR0n3pPuknIUI7u0V5rEc8x7D1pg1lALpB7TFi5y5di3vmUCz6iNk1oyj/9xqNmUHpJg8BY=',
config: getConfig(), //getDislogConfig(),
);
}
print(result);
runApp(
MaterialApp(
home: MyApp(),
),
);
SystemUiOverlayStyle systemUiOverlayStyle =
SystemUiOverlayStyle(statusBarColor: Colors.transparent);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
BuildContext? mContext;
Timer? countdownTimer;
[@override](/user/override)
void initState() {
super.initState();
/// 执行相关登录
login();
}
/// 相关登录
login() async {
/// 登录监听
AliAuthPlugin.loginListen(
type: false, onEvent: _onEvent, onError: _onError);
}
/// 登录成功处理
void _onEvent(event) async {
print("-------------成功分割线------------$event");
if (event != null && event['code'] != null) {
if (event['code'] == '600024') {
await AliAuthPlugin.login;
} else if (event['code'] == '600000') {
print('获取到的token${event["data"]}');
}
}
}
/// 登录错误处理
void _onError(error) {
print("-------------失败分割线------------$error");
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
brightness: Brightness.light,
),
home: Scaffold(
appBar: AppBar(
title: const Text('阿里云一键登录插件'),
),
body: Column(
children: <Widget>[
ElevatedButton(
onPressed: () async {
final result = await AliAuthPlugin.login;
print(result);
},
child: Text('直接登录'),
),
Platform.isIOS
? ElevatedButton(
onPressed: () async {
await AliAuthPlugin.appleLogin;
},
child: Text('apple登录'),
)
: Container()
],
),
),
);
}
}
更多关于Flutter阿里巴巴认证插件ali_auth_fplus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter阿里巴巴认证插件ali_auth_fplus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
ali_auth_fplus
是一个用于 Flutter 的阿里巴巴认证插件,主要用于集成阿里巴巴的认证服务,如手机号一键登录、实名认证等功能。以下是如何在 Flutter 项目中使用 ali_auth_fplus
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 ali_auth_fplus
插件的依赖:
dependencies:
flutter:
sdk: flutter
ali_auth_fplus: ^版本号 # 请替换为最新版本号
然后,运行 flutter pub get
来获取依赖。
2. 配置权限
在 AndroidManifest.xml
和 Info.plist
文件中添加必要的权限和配置。
Android
在 android/app/src/main/AndroidManifest.xml
中添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
iOS
在 ios/Runner/Info.plist
中添加以下权限:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
3. 初始化插件
在 main.dart
文件中初始化 ali_auth_fplus
插件:
import 'package:ali_auth_fplus/ali_auth_fplus.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await AliAuthFplus.init(
appKey: 'your_app_key', // 替换为你的AppKey
appSecret: 'your_app_secret', // 替换为你的AppSecret
);
runApp(MyApp());
}
4. 使用插件进行认证
在需要使用认证的地方,调用 ali_auth_fplus
提供的方法。例如,进行手机号一键登录:
import 'package:ali_auth_fplus/ali_auth_fplus.dart';
class MyHomePage extends StatelessWidget {
Future<void> _loginWithPhone() async {
try {
final result = await AliAuthFplus.loginWithPhone();
print('Login result: $result');
} catch (e) {
print('Login failed: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AliAuth FPlus Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: _loginWithPhone,
child: Text('Login with Phone'),
),
),
);
}
}