Flutter身份验证插件stytch_dart_auth_sdk的使用

插件stytch_dart_auth_sdk概述

stytch_dart_auth_sdk 是一个用于在 Dart 或 Flutter 项目中实现身份验证的强大且灵活的工具集。它提供了 stytch 身份验证功能的 Dart 实现。

特性

  • 用户管理: 提供一整套全面的用户管理功能,以无缝管理用户账户。
  • 自定义令牌生成: 通过生成自定义令牌,将 stytch 身份验证与后端服务集成。
  • 生成电子邮件操作链接: 创建并发送电子邮件操作链接给用户的邮箱,用于邮箱验证、密码重置等。
  • ID 令牌验证: 安全地验证 ID 令牌,确保应用程序用户已认证并授权访问应用。
  • 管理 SAML/OIDC 提供商配置: 管理和配置 SAML 和 OIDC 提供商,支持身份验证和简单的单点登录解决方案。

插件stytch_dart_auth_sdk入门指南

若要在您的 Flutter 项目中使用 stytch_dart_auth_sdk 实现 stytch 身份验证,请按照以下步骤设置 auth SDK:

  1. 确保您的系统已安装 Flutter 或 Dart (3.4.x) SDK。
  2. 设置 stytch 项目和服务账户。
  3. 设置 Flutter 项目。

安装

对于 Flutter 项目,使用以下命令安装插件:

flutter pub add stytch_dart_auth_sdk

您也可以手动编辑 pubspec.yaml 文件,添加以下内容:

dependencies:
  stytch_dart_auth_sdk: ^0.0.1-pre+11

然后运行以下命令完成安装:

flutter pub get

注意: SDK 版本可能会有所不同。

使用方法

示例代码

import 'dart:io';
import 'package:bot_toast/bot_toast.dart';
import 'package:cognito/screens/splash_screen/splash_screen.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:stytch_dart_auth_sdk/stytch_dart_auth_sdk.dart'; // 导入 stytch_dart_auth_sdk
import 'package:flutter/services.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  try {
    if (kIsWeb) {
      // 在 Web 端初始化 stytch
      debugPrint('Initializing stytch for Web...');
      stytchApp.initializeAppWithEnvironmentVariables(
        apiKey: 'YOUR-API-KEY', // 替换为您的 API 密钥
        projectId: 'YOUR-PROJECT-ID', // 替换为您的项目 ID
        bucketName: 'Your Bucket Name', // 替换为您的存储桶名称
      );
      debugPrint('stytch initialized for Web.');
    } else {
      if (Platform.isAndroid || Platform.isIOS) {
        debugPrint('Initializing stytch for Mobile...');

        // 加载服务账户 JSON 文件
        String serviceAccountContent = await rootBundle.loadString(
          'assets/service_account.json', // 替换为您实际的服务账户文件路径
        );
        debugPrint('Service account loaded.');

        // 使用服务账户内容初始化 stytch
        await stytchApp.initializeAppWithServiceAccount(
          serviceAccountContent: serviceAccountContent,
        );
        debugPrint('stytch initialized for Mobile.');
      }
    }

    // 获取 stytch Auth 实例
    final auth = stytchApp.instance.getAuth();
    debugPrint('stytch Auth instance obtained.');

    runApp(const MyApp());
  } catch (e, stackTrace) {
    debugPrint('Error initializing stytch: $e');
    debugPrint('StackTrace: $stackTrace');
  }
}

详细说明

  1. 导入包

    import 'package:stytch_dart_auth_sdk/stytch_dart_auth_sdk.dart';

    将 stytch_dart_auth_sdk 包导入到您的 Dart 或 Flutter 项目中。

  2. Web 初始化

    stytchApp.initializeAppWithEnvironmentVariables(
      apiKey: 'YOUR-API-KEY',
      projectId: 'YOUR-PROJECT-ID',
      bucketName: 'Your Bucket Name',
    );

    对于 Flutter Web,使用环境变量初始化 stytch。

  3. 移动设备初始化

    • 加载服务账户 JSON 文件:
      String serviceAccountContent = await rootBundle.loadString(
        'assets/service_account.json',
      );
    • 使用服务账户内容初始化:
      await stytchApp.initializeAppWithServiceAccount(
        serviceAccountContent: serviceAccountContent,
      );
  4. 获取 Auth 实例

    final auth = stytchApp.instance.getAuth();
1 回复

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


stytch_dart_auth_sdk 是一个用于在 Flutter 应用中实现身份验证的插件,它基于 Stytch 的身份验证服务。Stytch 提供了一套强大的身份验证解决方案,包括密码、OAuth、Magic Links、OTP 等多种身份验证方式。

以下是如何在 Flutter 项目中使用 stytch_dart_auth_sdk 的基本步骤:

1. 安装依赖

首先,你需要在 pubspec.yaml 文件中添加 stytch_dart_auth_sdk 依赖:

dependencies:
  flutter:
    sdk: flutter
  stytch_dart_auth_sdk: ^0.0.1  # 请检查最新版本

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

2. 初始化 SDK

在你的 Flutter 应用中,首先需要初始化 Stytch SDK。通常你可以在 main.dart 文件中进行初始化:

import 'package:stytch_dart_auth_sdk/stytch_dart_auth_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Stytch SDK
  await StytchAuth.initialize(
    publicToken: 'YOUR_PUBLIC_TOKEN',  // 你的 Stytch Public Token
    environment: StytchEnvironment.live,  // 或者 StytchEnvironment.test
  );

  runApp(MyApp());
}

3. 实现身份验证功能

3.1 使用 Magic Links 进行身份验证

Magic Links 是一种无密码登录方式,用户通过点击发送到其邮箱的链接进行登录。

import 'package:stytch_dart_auth_sdk/stytch_dart_auth_sdk.dart';

Future<void> sendMagicLink(String email) async {
  try {
    await StytchAuth.magicLinks.email.send(
      email: email,
      loginRedirectUrl: 'https://yourapp.com/login',  // 登录成功后的重定向 URL
      signupRedirectUrl: 'https://yourapp.com/signup',  // 注册成功后的重定向 URL
    );
    print('Magic Link sent successfully');
  } catch (e) {
    print('Failed to send Magic Link: $e');
  }
}

3.2 使用 OAuth 进行身份验证

OAuth 允许用户通过第三方服务(如 Google、Facebook 等)进行登录。

import 'package:stytch_dart_auth_sdk/stytch_dart_auth_sdk.dart';

Future<void> startOAuth(String provider) async {
  try {
    await StytchAuth.oauth.start(
      provider: provider,  // 例如 'google', 'facebook'
      redirectUri: 'https://yourapp.com/oauth/callback',  // 回调 URL
    );
    print('OAuth started successfully');
  } catch (e) {
    print('Failed to start OAuth: $e');
  }
}

3.3 使用 OTP 进行身份验证

OTP(一次性密码)通常用于短信或邮箱验证。

import 'package:stytch_dart_auth_sdk/stytch_dart_auth_sdk.dart';

Future<void> sendOTP(String phoneNumber) async {
  try {
    await StytchAuth.otps.sms.send(
      phoneNumber: phoneNumber,
    );
    print('OTP sent successfully');
  } catch (e) {
    print('Failed to send OTP: $e');
  }
}

Future<void> verifyOTP(String code) async {
  try {
    await StytchAuth.otps.sms.verify(
      code: code,
    );
    print('OTP verified successfully');
  } catch (e) {
    print('Failed to verify OTP: $e');
  }
}

4. 处理用户会话

Stytch SDK 会自动管理用户会话。你可以通过以下方式检查用户是否已登录:

import 'package:stytch_dart_auth_sdk/stytch_dart_auth_sdk.dart';

Future<void> checkSession() async {
  try {
    final session = await StytchAuth.session.get();
    if (session != null) {
      print('User is logged in');
    } else {
      print('User is not logged in');
    }
  } catch (e) {
    print('Failed to check session: $e');
  }
}

5. 注销用户

你可以通过以下方式注销用户:

import 'package:stytch_dart_auth_sdk/stytch_dart_auth_sdk.dart';

Future<void> logout() async {
  try {
    await StytchAuth.session.revoke();
    print('User logged out successfully');
  } catch (e) {
    print('Failed to logout: $e');
  }
}

6. 处理回调

对于 Magic Links 和 OAuth,你需要在应用中处理回调。通常你可以在 MaterialApponGenerateRouteonUnknownRoute 中处理这些回调。

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      onGenerateRoute: (settings) {
        if (settings.name == '/login') {
          // 处理 Magic Link 回调
          final token = settings.arguments as String;
          StytchAuth.magicLinks.authenticate(token: token);
        } else if (settings.name == '/oauth/callback') {
          // 处理 OAuth 回调
          final token = settings.arguments as String;
          StytchAuth.oauth.authenticate(token: token);
        }
        return null;
      },
      home: HomeScreen(),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!