Flutter认证插件flulm_auth的使用

Flutter认证插件flulm_auth的使用

集成

iOS

  1. 设置工程最低支持 iOS 10.0: 在 Xcode 中打开工程 -> Targets -> General -> Development Info。
  2. 确保自定义的 URL Types 的 identifier 为 lmpay。具体参考 LMPay 工程配置
  3. ios/Podfile 文件中添加 use_frameworks!,如下所示:
target 'Runner' do
  use_frameworks!
  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end

示例代码

以下是一个完整的示例代码,展示如何使用 flulm_auth 插件进行授权和支付。

import 'package:flulm_auth/flulm_auth.dart' as flulmAuth;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: MyApp(),
    ));

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 存储回调代码
  String _code = 'Unknown';
  // 应用ID
  String _appId = "1911131949173836111";
  // 是否已安装乐马支付App
  bool _isInstalled = false;

  [@override](/user/override)
  void initState() {
    super.initState();
    // 注册应用ID
    flulmAuth.register(appId: _appId);
    // 监听授权回调
    flulmAuth.responseFromAuth.listen((data) {
      setState(() {
        _code = data.code;
      });
    });
    // 监听支付回调
    flulmAuth.responseFromPay.listen((data) {
      setState(() {
        _code = data.toString();
      });
    });
    // 检查是否安装了乐马支付App
    flulmAuth.isLemaPayInstalled().then((value) => setState(() => _isInstalled = value));
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('授权支付Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(24.0),
        child: Column(
          children: [
            // 显示乐马支付App的安装状态
            Row(children: [Text("乐马支付App"), Spacer(), Text(_isInstalled ? "已安装" : "未安装")]),
            // 授权和支付按钮
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              children: [
                ElevatedButton(onPressed: () => sendAuth(context), child: Text("授权")),
                ElevatedButton(onPressed: () => sendPay(context), child: Text("支付")),
              ],
            ),
            // 显示回调代码
            Text('callback code= $_code\n'),
          ],
        ),
      ),
    );
  }

  // 发起授权请求
  void sendAuth(BuildContext context) async {
    print("开始授权=》");
    flulmAuth.sendAuth(
      mContext: context,
      openId: _appId,
      supportScan: true,
      scope: "login",
      isTest: 2,
    );
  }

  // 发起支付请求
  void sendPay(BuildContext context) async {
    flulmAuth.sendPay(
      mContext: context,
      openId: _appId,
      supportScan: true,
      signData:
          'eyJhcHBfaWQiOiIxOTAzMDQxOTUyMjY3NzEyNjk0IiwidGltZXN0YW1wIjoxNjA4MDI1MDkxLCJub25jZV9zdHIiOiJiR0lWWGhqbktvZjJMcnpS...=',
      isTest: 2,
    );
  }
}

更多关于Flutter认证插件flulm_auth的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter认证插件flulm_auth的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flulm_auth 并不是一个官方的 Flutter 插件,可能是你提到的 flutter_authfirebase_auth 的拼写错误。假设你指的是 firebase_auth,这是 Flutter 官方提供的用于与 Firebase Authentication 集成的插件,以下是使用 firebase_auth 进行用户认证的基本步骤。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 firebase_auth 依赖:

dependencies:
  flutter:
    sdk: flutter
  firebase_auth: ^3.3.0
  firebase_core: ^1.10.0

然后运行 flutter pub get 来安装依赖。

2. 初始化 Firebase

在你的 Flutter 应用中初始化 Firebase。通常在 main.dart 中进行:

import 'package:firebase_core/firebase_core.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

3. 使用 firebase_auth 进行用户认证

以下是使用 firebase_auth 进行用户注册、登录和注销的示例代码:

用户注册

import 'package:firebase_auth/firebase_auth.dart';

Future<void> registerUser(String email, String password) async {
  try {
    UserCredential userCredential = await FirebaseAuth.instance.createUserWithEmailAndPassword(
      email: email,
      password: password,
    );
    print('User registered: ${userCredential.user!.uid}');
  } on FirebaseAuthException catch (e) {
    print('Error: ${e.message}');
  }
}

用户登录

import 'package:firebase_auth/firebase_auth.dart';

Future<void> loginUser(String email, String password) async {
  try {
    UserCredential userCredential = await FirebaseAuth.instance.signInWithEmailAndPassword(
      email: email,
      password: password,
    );
    print('User logged in: ${userCredential.user!.uid}');
  } on FirebaseAuthException catch (e) {
    print('Error: ${e.message}');
  }
}

用户注销

import 'package:firebase_auth/firebase_auth.dart';

Future<void> logoutUser() async {
  await FirebaseAuth.instance.signOut();
  print('User logged out');
}

获取当前用户

import 'package:firebase_auth/firebase_auth.dart';

User? getCurrentUser() {
  return FirebaseAuth.instance.currentUser;
}

4. 监听认证状态

你可以监听用户的认证状态,以便在用户登录或注销时更新 UI:

import 'package:firebase_auth/firebase_auth.dart';

class AuthState extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return StreamBuilder<User?>(
      stream: FirebaseAuth.instance.authStateChanges(),
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return HomeScreen();
        } else {
          return LoginScreen();
        }
      },
    );
  }
}
回到顶部