Flutter Odoo OAuth集成插件djangoflow_odoo_oauth的使用

Flutter Odoo OAuth集成插件djangoflow_odoo_oauth的使用

简介

djangoflow_odoo_oauth 是一个用于在 Flutter 应用中处理 Odoo 单点登录(SSO)认证的插件。它可以帮助开发者轻松实现与 Odoo 的认证集成,并提供了方便的 API 来管理会话和用户登出。


特性

  • 易于集成:支持与 Odoo 的 SSO 认证集成。
  • SSO URL 提取:自动提取 SSO 登录所需的 URL。
  • WebView 支持:通过 WebView 完成 SSO 登录流程。
  • 会话 Cookie 管理:自动管理认证过程中的 Cookie。
  • 登出功能:支持安全登出用户。

开始使用

1. 添加依赖

在项目的 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  djangoflow_odoo_oauth: ^1.0.0

然后运行以下命令以更新依赖项:

flutter pub get

使用示例

1. 用户认证

使用 OdooSSOAuthenticator 类来完成用户的认证过程。以下是完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Odoo OAuth Example')),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 初始化认证器
              final authenticator = OdooSSOAuthenticator();

              try {
                // 调用认证方法
                final sessionId = await authenticator.authenticate(
                  context,
                  baseUrl: 'https://your-odoo-server.com', // 替换为你的 Odoo 服务器地址
                );

                if (sessionId != null) {
                  // 认证成功,可以使用 sessionId 进行后续操作
                  print('Session ID: $sessionId');
                }
              } catch (e) {
                // 处理认证错误
                print('Authentication failed: $e');
              }
            },
            child: Text('Login with Odoo'),
          ),
        ),
      ),
    );
  }
}
2. 用户登出

调用 authenticator.logout() 方法即可完成用户登出:

await authenticator.logout(sessionId);

更多关于Flutter Odoo OAuth集成插件djangoflow_odoo_oauth的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


要在Flutter应用中集成Odoo的OAuth认证,可以使用djangoflow_odoo_oauth插件。这个插件简化了与Odoo服务器的OAuth 2.0认证流程。以下是使用djangoflow_odoo_oauth插件的步骤:

1. 添加依赖

首先,在pubspec.yaml文件中添加djangoflow_odoo_oauth依赖:

dependencies:
  flutter:
    sdk: flutter
  djangoflow_odoo_oauth: ^1.0.0  # 请检查最新版本

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

2. 配置Odoo OAuth

在Odoo后台配置OAuth应用:

  1. 登录Odoo后台。
  2. 进入“Settings” > “Users & Companies” > “OAuth Applications”。
  3. 创建一个新的OAuth应用,记下Client IDClient Secret
  4. 设置回调URL(Callback URL),例如:com.yourapp://oauth2redirect

3. 初始化OAuth客户端

在你的Flutter应用中初始化OAuth客户端。通常可以在main.dart或某个初始化文件中进行配置:

import 'package:djangoflow_odoo_oauth/djangoflow_odoo_oauth.dart';

void main() {
  OdooOAuth.initialize(
    clientId: 'your_client_id',
    clientSecret: 'your_client_secret',
    redirectUri: 'com.yourapp://oauth2redirect',
    baseUrl: 'https://your-odoo-instance.com', // Odoo实例的URL
  );
  runApp(MyApp());
}

4. 实现登录流程

在需要的地方实现登录流程。例如,在登录按钮的点击事件中调用OdooOAuth.login()方法:

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

class LoginScreen extends StatelessWidget {
  Future<void> _login() async {
    try {
      final token = await OdooOAuth.login();
      print('Access Token: ${token.accessToken}');
      // 你可以在这里保存token,并导航到主页面
    } catch (e) {
      print('Login failed: $e');
    }
  }

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

5. 处理回调URL

在Android和iOS中配置回调URL的处理。

Android

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

<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="com.yourapp" />
    </intent-filter>
</activity>

iOS

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

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>com.yourapp</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>com.yourapp</string>
        </array>
    </dict>
</array>

6. 使用Access Token

登录成功后,你可以使用获取到的accessToken来调用Odoo的API。例如:

import 'package:http/http.dart' as http;

Future<void> fetchData() async {
  final token = await OdooOAuth.getAccessToken();
  final response = await http.get(
    Uri.parse('https://your-odoo-instance.com/api/res.partner'),
    headers: {
      'Authorization': 'Bearer ${token.accessToken}',
    },
  );
  print('Response: ${response.body}');
}

7. 处理刷新令牌

如果accessToken过期,你可以使用refreshToken来获取新的accessToken

final newToken = await OdooOAuth.refreshToken();
print('New Access Token: ${newToken.accessToken}');

8. 登出

在用户登出时,调用OdooOAuth.logout()方法:

await OdooOAuth.logout();
回到顶部