Flutter自定义认证插件customauth_flutter的使用

Flutter自定义认证插件customauth_flutter的使用

Torus CustomAuth SDK 为 Flutter 应用程序提供了强大的认证功能。本文将详细介绍如何安装、配置和使用 customauth_flutter 插件。


安装

要使用 customauth_flutter 插件,请在项目的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  customauth_flutter: ^版本号

然后运行以下命令以安装依赖:

flutter pub get

示例代码

以下是完整的代码示例,展示如何在 Flutter 应用程序中使用 customauth_flutter 插件。

初始化插件

首先,确保导入插件并初始化它:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AuthPage(),
    );
  }
}

class AuthPage extends StatefulWidget {
  @override
  _AuthPageState createState() => _AuthPageState();
}

class _AuthPageState extends State<AuthPage> {
  Future<void> _initializeTorus() async {
    await TorusDirect.init(
      network: TorusNetwork.testnet, // 使用测试网络
      browserRedirectUri: Uri.parse('https://scripts.toruswallet.io/redirect.html'), // OAuth 回调地址
      redirectUri: Uri.parse('torusapp://org.torusresearch.torusdirectandroid/redirect'), // 自定义回调地址
    );
  }

  @override
  void initState() {
    super.initState();
    _initializeTorus(); // 在初始化时调用
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Torus 自定义认证')),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            try {
              // 触发登录流程(例如 Google 登录)
              final result = await TorusDirect.triggerLogin(
                typeOfLogin: TorusLogin.google,
                verifier: 'google-lrc', // 验证器名称
                clientId: 'GOOGLE_CLIENT_ID', // 替换为您的 Google Client ID
              );

              print('登录成功: $result');
            } catch (e) {
              print('登录失败: $e');
            }
          },
          child: Text('开始登录'),
        ),
      ),
    );
  }
}

Android 特定配置

为了支持自定义 URL 方案,请在 android/app/build.gradle 中添加以下内容:

manifestPlaceholders = [
    'torusRedirectScheme': 'torusapp',
    'torusRedirectHost': 'org.torusresearch.torusdirectandroid',
    'torusRedirectPathPrefix': '/redirect'
]

iOS 特定配置

在 iOS 上,需要手动处理重定向 URL。打开 ios/Runner.xcworkspace 并添加自定义 URL 类型。

然后,在 ios/Runner/AppDelegate.swift 中添加以下代码以处理重定向 URL:

import UIKit
import Flutter
import TorusSwiftDirectSDK

[@UIApplicationMain](/user/UIApplicationMain)
[@objc](/user/objc) class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }

  // 处理重定向 URL 并传递给 Torus Direct 实例
  override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    TorusSwiftDirectSDK.handle(url: url)
    return true
  }
}

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

1 回复

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


customauth_flutter 是一个用于在 Flutter 应用中实现自定义认证流程的插件。它允许开发者集成自定义的认证服务,例如使用 OAuth、OpenID Connect 或其他自定义认证机制。以下是如何在 Flutter 项目中使用 customauth_flutter 插件的步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 customauth_flutter 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  customauth_flutter: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 配置插件

main.dart 文件中初始化插件。通常,你需要在 main() 函数中调用插件的初始化方法。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 CustomAuth
  await CustomAuth.initialize(
    clientId: 'YOUR_CLIENT_ID',
    redirectUri: 'YOUR_REDIRECT_URI',
    authorizationEndpoint: 'YOUR_AUTHORIZATION_ENDPOINT',
    tokenEndpoint: 'YOUR_TOKEN_ENDPOINT',
    scopes: ['openid', 'profile', 'email'],
  );

  runApp(MyApp());
}

3. 实现认证流程

接下来,你可以在应用中的某个地方(例如登录页面)实现认证流程。

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

class LoginPage extends StatelessWidget {
  Future<void> _login() async {
    try {
      final result = await CustomAuth.signIn();
      print('Access Token: ${result.accessToken}');
      print('ID Token: ${result.idToken}');
      print('Refresh Token: ${result.refreshToken}');
    } catch (e) {
      print('Error during login: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Login'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _login,
          child: Text('Login with Custom Auth'),
        ),
      ),
    );
  }
}

4. 处理认证结果

_login 方法中,你可以处理认证结果。通常,你会将获取到的 accessTokenidToken 存储在本地,并在后续的 API 请求中使用它们。

5. 注销

你还可以实现注销功能,以清除用户的认证状态。

Future<void> _logout() async {
  await CustomAuth.signOut();
  print('User logged out');
}

6. 处理认证回调

确保你的应用能够处理认证回调。通常,这涉及到在 AndroidManifest.xmlInfo.plist 中配置回调 URL。

Android

android/app/src/main/AndroidManifest.xml 中添加以下内容:

<activity android:name="com.linusu.flutter_web_auth.CallbackActivity">
  <intent-filter android:label="customauth_flutter">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="YOUR_REDIRECT_URI_SCHEME" />
  </intent-filter>
</activity>

iOS

ios/Runner/Info.plist 中添加以下内容:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>YOUR_REDIRECT_URI_SCHEME</string>
    </array>
  </dict>
</array>

7. 运行应用

现在,你可以运行你的 Flutter 应用,并测试自定义认证流程。

flutter run
回到顶部