Flutter阿联酋(UAE)密码验证插件ft_uaepass的使用

Flutter阿联酋(UAE)密码验证插件ft_uaepass的使用

介绍

此包允许Flutter应用程序集成阿联酋密码(UAE Pass)。
UAE Pass是一种基于区块链的身份认证服务,使用户能够通过单一身份访问政府和私营部门的服务。


功能

  • 使用UAE Pass进行登录。
  • 提供符合UAE Pass指南的登录、注册和logo按钮。
  • 支持英语和阿拉伯语。
  • 按钮支持深色模式、禁用状态和其他自定义选项。

Flutter兼容性

Package版本 Dart版本 Flutter版本
0.0.1+1 - 0.0.7+7 >=3.2.6 <4.0.0 >=1.17.0

开始使用

添加依赖

pubspec.yaml文件中添加以下依赖:

dependencies:
  ft_uaepass: ^0.0.7+7

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

flutter pub get

Android设置

  1. AndroidManifest.xml文件中更新android:launchModesingleTask
<activity
   ..... 
   android:launchMode="singleTask"
   .....
/>
  1. 添加权限和意图过滤器:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<uses-permission android:name="android.permission.INTERNET" />

<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:host="${redirectUrl without http or https}"
       android:scheme="https" />
</intent-filter>

iOS设置

  1. info.plist文件中添加CFBundleURLTypesLSApplicationQueriesSchemes
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>com.example</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>example</string>
        </array>
    </dict>
</array>

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>uaepass</string>
    <string>uaepassstg</string>
</array>

范围

目前仅支持urn:uae:digitalid:profile:general范围。


使用方法

登录(测试环境)

await UaePass(
    context: context,
    redirectUrl: "${redirectUrl}",
    state: "${State}",
    isProduction: false,
).signIn();

注意:

  • 对于Android测试,请执行以下步骤:
    1. 进入App信息。
    2. 点击“设为默认”。
    3. 点击“支持的Web地址”。
    4. 打开重定向URL的开关。

登录(生产环境)

await UaePass(
    context: context,
    clientId: "${clientId}",
    clientSecret: "${clientSecret}",
    redirectUrl: "${redirectUrl}",
    state: "${State}",
).signIn();

按钮示例

登录按钮

LoginWithUaePassButton(
  onPressed: () async {
    UAEPassWebViewResultModel? result = await UaePass(
      context: context,
      clientId: "${clientId}",
      clientSecret: "${clientSecret}",
      redirectUrl: "${redirectUrl}",
      state: "${State}",
    ).signIn();
  },
)

注册按钮

SignInWithUaePassButton(
  onPressed: () async {
    UAEPassWebViewResultModel? result = await UaePass(
      context: context,
      clientId: "${clientId}",
      clientSecret: "${clientSecret}",
      redirectUrl: "${redirectUrl}",
      state: "${State}",
    ).signIn();
  },
)

Logo按钮

LogoButton(
  onPressed: () async {
    UAEPassWebViewResultModel? result = await UaePass(
      context: context,
      clientId: "${clientId}",
      clientSecret: "${clientSecret}",
      redirectUrl: "${redirectUrl}",
      state: "${State}",
    ).signIn();
  },
)

更多关于Flutter阿联酋(UAE)密码验证插件ft_uaepass的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter阿联酋(UAE)密码验证插件ft_uaepass的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


ft_uaepass 是一个用于在 Flutter 应用中集成阿联酋(UAE)密码(UAEPASS)验证的插件。UAEPASS 是阿联酋政府提供的一种数字身份认证服务,允许用户通过单一的身份认证访问各种政府和私人服务。

安装 ft_uaepass 插件

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

dependencies:
  flutter:
    sdk: flutter
  ft_uaepass: ^1.0.0  # 请根据实际版本号进行替换

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

配置 ft_uaepass 插件

在使用 ft_uaepass 插件之前,你需要进行一些配置。

  1. 获取 UAEPASS 的客户端 ID 和重定向 URI

    • 你需要在 UAEPASS 开发者门户注册你的应用,并获取客户端 ID 和重定向 URI。
  2. 配置 Android 和 iOS

    • Android:在 AndroidManifest.xml 文件中添加以下配置:

      <application>
          <activity android:name="com.linusu.flutter_web_auth.CallbackActivity">
              <intent-filter android:label="flutter_web_auth">
                  <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_scheme"/>
              </intent-filter>
          </activity>
      </application>
      

      your_redirect_scheme 替换为你的重定向 URI 的 scheme。

    • iOS:在 Info.plist 文件中添加以下配置:

      <key>CFBundleURLTypes</key>
      <array>
          <dict>
              <key>CFBundleURLName</key>
              <string>your_redirect_scheme</string>
              <key>CFBundleURLSchemes</key>
              <array>
                  <string>your_redirect_scheme</string>
              </array>
          </dict>
      </array>
      

      同样,将 your_redirect_scheme 替换为你的重定向 URI 的 scheme。

使用 ft_uaepass 插件

在你的 Flutter 应用中,你可以按照以下步骤使用 ft_uaepass 插件:

  1. 导入插件

    import 'package:ft_uaepass/ft_uaepass.dart';
    
  2. 初始化插件

    final uaePass = FtUaePass(
      clientId: 'your_client_id',  // 替换为你的客户端 ID
      redirectUri: 'your_redirect_uri',  // 替换为你的重定向 URI
      scope: 'openid profile',  // 根据需求设置 scope
    );
    
  3. 启动认证流程

    try {
      final result = await uaePass.authenticate();
      print('Authentication successful: $result');
    } catch (e) {
      print('Authentication failed: $e');
    }
    

    authenticate() 方法会启动 UAEPASS 的认证流程,并在认证成功后返回一个包含用户信息的 result 对象。

  4. 处理认证结果

    你可以根据 result 对象中的信息来处理用户的登录状态,例如保存用户的 token 或跳转到主页面。

示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 ft_uaepass 插件进行 UAEPASS 认证:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('UAEPASS Authentication'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              final uaePass = FtUaePass(
                clientId: 'your_client_id',
                redirectUri: 'your_redirect_uri',
                scope: 'openid profile',
              );
              try {
                final result = await uaePass.authenticate();
                print('Authentication successful: $result');
              } catch (e) {
                print('Authentication failed: $e');
              }
            },
            child: Text('Login with UAEPASS'),
          ),
        ),
      ),
    );
  }
}
回到顶部