Flutter Office365登录插件office365_login_flutter的使用

Flutter Office365登录插件office365_login_flutter的使用

Microsoft 365 是一套由 Microsoft 提供的基于云的服务,包括流行的软件如 Microsoft Word、Excel、PowerPoint 和 Outlook,以及其他服务如 OneDrive、SharePoint 和 Microsoft Teams。要使用 Microsoft 365,用户必须首先用他们的 Microsoft 账户或工作/学校账户进行登录。登录过程要求用户提供其凭证,包括电子邮件或用户名和密码。

要在 Flutter 应用程序中集成 Microsoft 365 登录功能,可以使用 office365_login_flutter 库。该库提供了一个易于使用的界面,用于通过各种提供商(包括 Microsoft 365)集成 OAuth2 认证。

开始使用

注册你的应用

  1. 打开 Azure 门户并使用你的 Microsoft 账户登录。(https://portal.azure.com/)
  2. 创建一个新的 Flutter 项目,并在 pubspec.yaml 文件中添加依赖项:
dependencies:
  office365_login_flutter: ^0.0.1

Android 设置

  1. 打开项目的 build.gradle 文件。
  2. defaultConfig 部分中添加以下代码:
defaultConfig {
     manifestPlaceholders += [appAuthRedirectScheme: "msauth"]
}
  1. AndroidManifest.xml 文件内添加以下代码以声明重定向 URI 方案:
<activity
   android:name="net.openid.appauth.RedirectUriReceiverActivity"
   android:theme="@style/Theme.AppCompat"
   android:launchMode="singleTask"
   android:exported="true">
   <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="msauth"
   android:host="com.example.flutter_microsoft_login"
   android:path="/VzSiQcXRmi2kyjzcA+mYLEtbGVs=" />
   </intent-filter>
   </activity>
<meta-data
    android:name="com.microsoft.identity.client.RedirectUri"
    android:value="your redirect uri" />

<meta-data
    android:name="com.microsoft.identity.client.ClientId"
    android:value="your client id" />

iOS 设置

  1. 打开项目的 Info.plist 文件。
  2. 添加以下键到文件中:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.example.flutterMicrosoftLogin</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauth</string>
<string>msauthv2</string>
</array>

请参阅演示如何登录到演示身份服务器实例(https://demo.duendesoftware.com)。它还经过了 Azure B2C 和 Google 登录的测试。建议开发者查看他们正在使用的身份提供者的文档,以了解其支持的功能,例如如何登出、支持的 prompt 参数值等。API 文档可以在 https://pub.dartlang.org/documentation/flutter_appauth/latest/ 查找。

在 Flutter 应用中设置 office365_login

第一步是创建一个插件的实例:

final AuthorizationTokenResponse? result = await const Office365Login().authentication(
  AuthorizationTokenRequest(
    'b4b47313-22b0-4993-b9b9-a4725372df9e', // 替换为你的客户端ID
    'msauth://com.example.flutter_microsoft_login/VzSiQcXRmi2kyjzcA%2BmYLEtbGVs%3D', // 替换为你的重定向URI
    discoveryUrl: 'https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration',
    scopes: ['openid','profile', 'email',], // 可以根据需求添加其他作用域
    serviceConfiguration: const AuthorizationServiceConfiguration(
      authorizationEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
      tokenEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
    ),
  ),
);

完整示例 Demo

以下是完整的示例代码,展示了如何在 Flutter 应用程序中实现 Microsoft 365 登录。

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Office365 登录 Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MS365Login(),
    );
  }
}

class MS365Login extends StatefulWidget {
  const MS365Login({Key? key}) : super(key: key);

  [@override](/user/override)
  _MS365LoginState createState() => _MS365LoginState();
}

class _MS365LoginState extends State<MS365Login> {
  String? _accessToken;

  Future<void> _login() async {
    try {
      final result = await const Office365Login().authentication(
        AuthorizationTokenRequest(
          'b4b47313-22b0-4993-b9b9-a4725372df9e',
          'msauth://com.example.flutter_microsoft_login/VzSiQcXRmi2kyjzcA%2BmYLEtbGVs%3D',
          discoveryUrl: 'https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration',
          scopes: ['openid','profile', 'email',],
          serviceConfiguration: const AuthorizationServiceConfiguration(
            authorizationEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
            tokenEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
          ),
        ),
      );

      setState(() {
        _accessToken = result.accessToken;
      });
    } catch (e) {
      print('Error during login: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Office365 登录'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _login,
              child: Text('登录 Office365'),
            ),
            if (_accessToken != null)
              Text('Access Token: $_accessToken'),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用office365_login_flutter插件的代码示例。这个插件允许你通过Office 365进行身份验证。首先,确保你已经在你的pubspec.yaml文件中添加了依赖:

dependencies:
  flutter:
    sdk: flutter
  office365_login_flutter: ^最新版本号  # 请替换为最新版本号

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

接下来,你需要进行一些配置。首先,确保你已经注册了Azure AD应用,并获得了客户端ID和重定向URI。

1. 配置Azure AD

在Azure AD中,你需要创建一个新的应用注册,并获取以下信息:

  • 应用程序(客户端)ID
  • 目录(租户)ID
  • 重定向URI

2. 在Flutter中使用插件

以下是一个基本的示例,展示如何在Flutter中使用office365_login_flutter插件进行Office 365登录:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Office365 Login Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String accessToken = "";
  String errorMessage = "";

  void _login() async {
    setState(() {为你的
客户端      IDaccessToken
 =       "";tenant
Id      :errorMessage ' =你的 "";租户
ID    ',});    
//
     替换final为你的 config租户 =ID Office
3      ',6redirect5UriLogin:Config '(你的
重定向      URIclientId: '你的客户端ID',  // 替换  // 替换为你的重定向URI
      scopes: ['openid', 'profile', 'email'],  // 根据需要添加更多范围
    );

    try {
      final result = await Office365Login.login(config);
      setState(() {
        accessToken = result.accessToken;
        print("Access Token: ${result.accessToken}");
        print("ID Token: ${result.idToken}");
        print("User Info: ${result.userInfo}");
      });
    } catch (e) {
      setState(() {
        errorMessage = e.toString();
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Office365 Login Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Access Token:'),
            Text(accessToken),
            SizedBox(height: 20),
            Text('Error Message:'),
            Text(errorMessage),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _login,
              child: Text('Login with Office365'),
            ),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. 配置权限:确保你的Azure AD应用配置有正确的权限,以便能够请求所需的资源。
  2. 处理Token:一旦获得accessToken,你可以用它来访问Office 365 API或其他需要身份验证的服务。
  3. 错误处理:在生产环境中,你需要更详细的错误处理逻辑,以处理各种可能的错误情况。

这个示例提供了一个基本框架,你可以根据需要扩展和调整它以适应你的具体需求。

回到顶部