Flutter第三方登录插件ssinappflutter的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter第三方登录插件ssinappflutter的使用

本文将详细介绍如何在Flutter项目中使用ssinappflutter插件来实现第三方登录功能。该插件可以帮助开发者通过配置Web视图(WebView)实现Android或iOS平台上的第三方登录。


配置依赖项

首先,在pubspec.yaml文件中添加ssinappflutter插件的依赖项:

dependencies:
  ssinappflutter: ^0.0.34

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

flutter pub get

初始化环境变量

main()函数中初始化BaseUrlManager,设置子域名:

import 'package:ssinappflutter/ssinappflutter.dart';

void main() {
  // 设置子域名
  BaseUrlManager.setSubdomain("995a-prod-micro");

  // 在这里继续初始化其他必要的配置...
}

配置Token列表

main()函数中传递Token列表,这些Token通常由后端团队提供:

void main() {
  BaseUrlManager.setSubdomain("995a-prod-micro");

  // 设置Token列表
  TokenManager.setTokens([
    "yOH8vkzfe6CTVeY28w55%2BgEtPmg39FcK05sHI8O%2F5ua0Oq2kPOZe%2BlkhhayxeitDwCEpCmHxL2DCiToampXsxw%3D%3D",
    "yOH8vkzfe6CTVeY28w55+gEtPmg39FcK05sHI8O/5ua0Oq2kPOZe+lkhhayxeitDwCEpCmHxL2DCiToampXsxw==",
    "y5YA8+0bQheDtcUSFJRwIgPwjc4eI2Bdt/aNBcdo2WzQuTzaMN+GU0UQFUA9wcbiEf0zkvFlX77OEvhVTHkrkg==",
    "i0nFNuasAD2N9JhmjYqKLta5JeP+fs4+87t0jGnAAD6q8T57URDuNqVenW1G1Lhs75epUjBNLsJbCvn6ZuBaIw==",
    "8PHllag32EllW3JUT74LuKZII6J4e/n0a77ur3y5qQ9QglC/nnwgy+u+hoBRT0TDYJru99QaG5MxnvSMD+IqBA==",
  ]);

  // 继续其他初始化操作...
}

配置联系人数据(可选)

如果需要传递联系人信息,可以调用ContactManager.setContactDataFromMap()方法,并传入一个Map<String, String>对象:

void main() {
  BaseUrlManager.setSubdomain("995a-prod-micro");

  // 设置Token列表
  TokenManager.setTokens([
    "yOH8vkzfe6CTVeY28w55%2BgEtPmg39FcK05sHI8O%2F5ua0Oq2kPOZe%2BlkhhayxeitDwCEpCmHxL2DCiToampXsxw%3D%3D",
    "yOH8vkzfe6CTVeY28w55+gEtPmg39FcK05sHI8O/5ua0Oq2kPOZe+lkhhayxeitDwCEpCmHxL2DCiToampXsxw==",
    "y5YA8+0bQheDtcUSFJRwIgPwjc4eI2Bdt/aNBcdo2WzQuTzaMN+GU0UQFUA9wcbiEf0zkvFlX77OEvhVTHkrkg==",
    "i0nFNuasAD2N9JhmjYqKLta5JeP+fs4+87t0jGnAAD6q8T57URDuNqVenW1G1Lhs75epUjBNLsJbCvn6ZuBaIw==",
    "8PHllag32EllW3JUT74LuKZII6J4e/n0a77ur3y5qQ9QglC/nnwgy+u+hoBRT0TDYJru99QaG5MxnvSMD+IqBA==",
  ]);

  // 设置联系人数据
  Map<String, String> userData = {
    "Email": "flutterplugin@gmail.com",
    "name": "Flutter Test",
    "Phone Number": "12345678",
    "agents_email": "agent@example.com",
    "City": "New York"
  };

  ContactManager.setContactDataFromMap(userData);

  // 继续其他初始化操作...
}

配置元数据(可选)

如果需要传递元数据,可以调用MetaDataManager.setMetadataFromMap()方法,并传入一个Map<String, String>对象:

void main() {
  BaseUrlManager.setSubdomain("995a-prod-micro");

  // 设置Token列表
  TokenManager.setTokens([
    "yOH8vkzfe6CTVeY28w55%2BgEtPmg39FcK05sHI8O%2F5ua0Oq2kPOZe%2BlkhhayxeitDwCEpCmHxL2DCiToampXsxw%3D%3D",
    "yOH8vkzfe6CTVeY28w55+gEtPmg39FcK05sHI8O/5ua0Oq2kPOZe+lkhhayxeitDwCEpCmHxL2DCiToampXsxw==",
    "y5YA8+0bQheDtcUSFJRwIgPwjc4eI2Bdt/aNBcdo2WzQuTzaMN+GU0UQFUA9wcbiEf0zkvFlX77OEvhVTHkrkg==",
    "i0nFNuasAD2N9JhmjYqKLta5JeP+fs4+87t0jGnAAD6q8T57URDuNqVenW1G1Lhs75epUjBNLsJbCvn6ZuBaIw==",
    "8PHllag32EllW3JUT74LuKZII6J4e/n0a77ur3y5qQ9QglC/nnwgy+u+hoBRT0TDYJru99QaG5MxnvSMD+IqBA==",
  ]);

  // 设置联系人数据
  Map<String, String> userData = {
    "Email": "flutterplugin@gmail.com",
    "name": "Flutter Test",
    "Phone Number": "12345678",
    "agents_email": "agent@example.com",
    "City": "New York"
  };
  ContactManager.setContactDataFromMap(userData);

  // 设置元数据
  Map<String, String> metadata = {"metadatText": "testttt"};
  MetaDataManager.setMetadataFromMap(metadata);

  // 继续其他初始化操作...
}

打开WebView

在需要打开WebView的Widget中,使用以下代码片段来触发第三方登录:

import 'package:ssinappflutter/ssinappflutter.dart';

class MyLoginButton extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {
        // 打开WebView并指定回调值
        Ssinappflutter.openWebView(
          context,
          'https://example.com', // 目标URL
          urlMatcher: 'testandroid2', // 回调值
        );
      },
      child: Text('第三方登录'),
    );
  }
}

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

1 回复

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


ssinappflutter 是一个用于在 Flutter 应用中实现第三方登录的插件。它支持多种第三方登录方式,如微信、QQ、微博等。以下是如何使用 ssinappflutter 插件的基本步骤:

1. 添加依赖

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

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

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

2. 配置平台

根据你使用的平台(Android 或 iOS),你需要进行一些配置。

Android 配置

android/app/build.gradle 文件中,确保 minSdkVersion 至少为 16:

defaultConfig {
    minSdkVersion 16
    targetSdkVersion 30
    // 其他配置
}

iOS 配置

ios/Runner/Info.plist 文件中,添加以下内容以支持 URL Scheme:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>weixin</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>wx你的AppID</string>
        </array>
    </dict>
</array>

3. 初始化插件

在你的 Flutter 应用中,初始化 ssinappflutter 插件。通常你可以在 main.dart 文件中进行初始化:

import 'package:ssinappflutter/ssinappflutter.dart';

void main() {
  Ssinappflutter.init(
    wechatAppId: '你的微信AppID',
    qqAppId: '你的QQAppID',
    weiboAppKey: '你的微博AppKey',
    // 其他配置
  );
  runApp(MyApp());
}

4. 实现登录功能

在你的应用中,你可以使用 Ssinappflutter 提供的 API 来实现第三方登录。例如,实现微信登录:

import 'package:ssinappflutter/ssinappflutter.dart';

void loginWithWechat() async {
  try {
    final result = await Ssinappflutter.loginWithWechat();
    print('登录成功: $result');
  } catch (e) {
    print('登录失败: $e');
  }
}

5. 处理回调

在 Android 和 iOS 中,你需要处理登录回调。通常你需要在 MainActivityAppDelegate 中处理回调。

Android

android/app/src/main/kotlin/com/example/your_app/MainActivity.kt 中:

import io.flutter.embedding.android.FlutterActivity
import com.ssinappflutter.ssinappflutter.SsinappflutterPlugin

class MainActivity: FlutterActivity() {
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        SsinappflutterPlugin.onActivityResult(requestCode, resultCode, data)
    }
}

iOS

ios/Runner/AppDelegate.swift 中:

import UIKit
import Flutter
import ssinappflutter

[@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)
  }

  override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    return SsinappflutterPlugin.application(app, open: url, options: options)
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!