Flutter一键登录插件click_login的使用
Flutter一键登录插件click_login的使用
概述
ali_auth
是一个用于阿里云号码认证服务的一键登录插件。该插件支持 Android 和 iOS 平台,并且完全开源,可以高度定制化。它可以帮助开发者快速集成一键登录功能,提升用户体验。
功能特点
- 国际支持:支持多语言,包括中文和英文。
- 免费开源:插件完全免费,用户可以根据需求进行修改和优化。
- 高定制性:插件提供了多种配置选项,可以根据项目需求进行调整。
使用步骤
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 ali_auth
插件依赖:
dependencies:
ali_auth: ^最新版本号
然后运行以下命令以更新依赖:
flutter pub get
2. 初始化插件
在应用启动时,调用 AliAuthPlugin.initSdk()
方法初始化插件。需要提供 sk
和配置参数。
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();
/// 初始化插件
/// 注意:请根据实际需求修改配置参数
final result;
if (Platform.isAndroid) {
result = await AliAuthPlugin.initSdk(
sk: 'uYhNaUWEW+1rV9cq27oAQVWi8qFaF1wKfHr6BjrdnMoyQbtAxIA7q/ToLl1xKGCAwDl66Mii6KXK3FstD+PNcwS0aFCLorOrYHMHed8FX7AT8qu/AlzTXE05g0FmUMb5z1QKCiyvpmP+THs04fCfVtHsYdirkJGcd58r24o3QykIatcZYgd1jB3WAz3HLUqCg4afUK49SggbPdwscSfVV8wcB/hP+ST9kUVD02JmsqLA4YZUCRuUX2+o5AG1UpJwi/OHEccrFyEwuODaFzDSMPVth2pTZEwCB/g3PeLWhUQlWxvRqolgWQ==',
config: getConfig(),
);
} else {
result = await AliAuthPlugin.initSdk(
sk: '6QzZRbemo+1Zm/C6pMyJQ34YZDafH0UCvIUN1hMnHYHnL5Be2MzeRRC2tmWUywNpxWLvqh9kjrRcE7lVVUZFTWCqKvp2VZuvOIOrZIfCxWWcu7YfEDCrlwekJhEh0EGot3tsDcO8pvgLY5nIc7FmiFGdaWDJ8j6mMRkQJ66PC82H5k9ZR8+MTdGC0zH13ToUxzRGP2d3vzNOAFUbzuKnJA6NdndsTb+CzzoBPR0n3pPuknIUI7u0V5rEc8x7D1pg1lALpB7TFi5y5di3vmUCz6iNk1oyj/9xqNmUHpJg8BY=',
config: getConfig(), //getDislogConfig(),
);
}
print(result);
runApp(
MaterialApp(
home: MyApp(),
),
);
}
3. 配置参数
配置参数分为两种:全屏模式和弹窗模式。以下是两种模式的示例配置:
全屏模式配置
getConfig() {
return {
"theme": {
"backgroundColor": "#FFFFFF",
"textColor": "#000000",
"primaryColor": "#FF5722",
"secondaryColor": "#FFC107",
},
"logoUrl": "assets/logo.png",
"appName": "My App",
"agreement": {
"title": "隐私协议",
"content": "我们承诺保护您的隐私。",
"url": "https://example.com/privacy-policy",
},
"thirdParty": [
{"name": "Google", "iconUrl": "assets/google.png"},
{"name": "Facebook", "iconUrl": "assets/facebook.png"},
],
};
}
弹窗模式配置
getDislogConfig() {
return {
"theme": {
"backgroundColor": "#FFFFFF",
"textColor": "#000000",
"primaryColor": "#FF5722",
"secondaryColor": "#FFC107",
},
"logoUrl": "assets/logo.png",
"appName": "My App",
"agreement": {
"title": "隐私协议",
"content": "我们承诺保护您的隐私。",
"url": "https://example.com/privacy-policy",
},
"thirdParty": [
{"name": "Google", "iconUrl": "assets/google.png"},
{"name": "Facebook", "iconUrl": "assets/facebook.png"},
],
};
}
4. 登录监听
在应用启动时,注册登录监听器以捕获登录事件。
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一键登录插件click_login的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter一键登录插件click_login的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
click_login
是一个用于实现一键登录功能的 Flutter 插件。它通常与第三方登录服务(如微信、QQ、支付宝等)集成,简化用户的登录流程。以下是使用 click_login
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 click_login
插件的依赖:
dependencies:
flutter:
sdk: flutter
click_login: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 配置第三方登录服务
在使用 click_login
之前,你需要在相应的第三方平台(如微信、QQ、支付宝等)注册应用,并获取相应的 AppID
和 AppSecret
。根据不同的平台,可能还需要配置一些其他的信息。
3. 初始化插件
在你的 Flutter 项目中,首先需要初始化 click_login
插件。通常在 main.dart
中进行初始化:
import 'package:click_login/click_login.dart';
void main() {
ClickLogin.init(
wechatAppId: 'your_wechat_app_id',
qqAppId: 'your_qq_app_id',
alipayAppId: 'your_alipay_app_id',
// 其他平台的配置
);
runApp(MyApp());
}
4. 实现一键登录
在你的登录页面中,可以使用 ClickLogin
提供的方法来实现一键登录。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:click_login/click_login.dart';
class LoginPage extends StatelessWidget {
Future<void> _loginWithWechat() async {
try {
final result = await ClickLogin.loginWithWechat();
print('Wechat Login Success: ${result.toJson()}');
} catch (e) {
print('Wechat Login Failed: $e');
}
}
Future<void> _loginWithQQ() async {
try {
final result = await ClickLogin.loginWithQQ();
print('QQ Login Success: ${result.toJson()}');
} catch (e) {
print('QQ Login Failed: $e');
}
}
Future<void> _loginWithAlipay() async {
try {
final result = await ClickLogin.loginWithAlipay();
print('Alipay Login Success: ${result.toJson()}');
} catch (e) {
print('Alipay Login Failed: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('一键登录'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _loginWithWechat,
child: Text('微信登录'),
),
ElevatedButton(
onPressed: _loginWithQQ,
child: Text('QQ登录'),
),
ElevatedButton(
onPressed: _loginWithAlipay,
child: Text('支付宝登录'),
),
],
),
),
);
}
}
5. 处理登录结果
在 _loginWithWechat
、_loginWithQQ
和 _loginWithAlipay
方法中,你可以处理登录成功或失败的结果。通常,登录成功后会返回一些用户信息,你可以将这些信息保存到本地或发送到服务器进行进一步处理。
6. iOS 配置
对于 iOS 项目,你需要在 Info.plist
文件中添加相应的 URL Scheme 配置,以便第三方登录服务可以回调你的应用。例如:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>wechat</string>
<key>CFBundleURLSchemes</key>
<array>
<string>your_wechat_app_id</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>qq</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tencent_your_qq_app_id</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>alipay</string>
<key>CFBundleURLSchemes</key>
<array>
<string>your_alipay_app_id</string>
</array>
</dict>
</array>
7. Android 配置
对于 Android 项目,你需要在 AndroidManifest.xml
文件中添加相应的配置,以便第三方登录服务可以回调你的应用。例如:
<activity android:name="com.tencent.tauth.AuthActivity"
android:noHistory="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent_your_qq_app_id" />
</intent-filter>
</activity>