Flutter社交认证插件flutter_gb_authentication_fire_social的使用

Flutter社交认证插件flutter_gb_authentication_fire_social的使用

特性

警告

首先,确保您的Firebase项目已经配置并且您有访问权限。

必要依赖项

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

firebase_auth: ^4.4.2 # 或更高版本
firebase_core: ^2.3.0 # 或更高版本
flutter_gb_authentication_fire_social: 2.0.0

根据使用的社交提供商安装相应的依赖包:

  • flutter_gb_authentication_fire_social_google
  • flutter_gb_authentication_fire_social_apple
  • flutter_gb_authentication_fire_social_facebook

Android配置

  1. 访问Firebase控制台并打开项目配置。
  2. 向下滚动到您的应用部分,您将看到已配置的应用程序。
  3. 点击google-services.json按钮以在两个Android应用(开发和生产)中下载配置文件。
  4. 在您的项目文件夹中,转到android/app/src/文件夹。
  5. 在上述文件夹内为每个口味创建一个文件夹,并粘贴相应的google-services.json文件。
  6. android/build.gradle文件中,在依赖项中添加Google服务插件。
dependencies {
    classpath 'com.android.tools.build:gradle:4.1.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.google.gms:google-services:4.3.10'  // Google Services插件
}
  1. android/app/build.gradle文件中,应用Google服务插件。
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
apply plugin: 'com.google.gms.google-services'  // Google Services插件
  1. 我们需要在android/app/build.gradle文件中的Gradle依赖项中实现多DEX支持,以防止在使用Firebase时出现任何问题。
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:multidex:2.0.1' // 多DEX
}
  1. 同样地,我们还需要在上述文件的defaultConfig中启用多DEX支持。
defaultConfig {
    applicationId "com.example.app"
    minSdkVersion flutter.minSdkVersion
    targetSdkVersion flutter.targetSdkVersion
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
    multiDexEnabled true // 启用多DEX
}
  1. Google

    • Google配置
      1. 确保您已将您的SHA密钥添加到Firebase项目配置中。
  2. Facebook

    • Facebook配置
      1. 如果您的项目使用Facebook进行登录和注册,应在android/app/src/main/res/values/strings.xml文件中添加您的facebook_app_idfacebook_client_token
<resources>
    <string name="facebook_app_id">YOUR_ID</string>
    <string name="facebook_client_token">YOUR_CLIENT_TOKEN</string>
</resources>
    2. 您需要在`android/src/app/main/AndroidManifest.xml`文件中添加查询和元数据标签以完成Facebook配置。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.boxxie.app">
    <!-- 如果使用Facebook 添加此查询 -->
    <queries>
        <provider android:authorities="com.facebook.katana.provider.PlatformProvider" />
    </queries>
           
    <application android:label="@string/app_name" android:name="${applicationName}" android:icon="@mipmap/launcher_icon">
        <!-- 如果使用Facebook 添加这两个元数据 -->
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" />
        <meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token" />
        
        ...更多代码
    </application>
    ...更多代码
</manifest>
  1. Apple Sign In
    • Apple配置
      1. 在Firebase控制台 -> 身份验证 -> 登录方法中激活Apple登录方法。
      2. 我们建议遵循这些说明来配置Apple服务以创建Apple登录服务ID。
        • 创建Apple登录服务
        • 在每个App ID上启用Apple登录功能
        • 为Apple登录服务生成密钥
        • 在Apple登录方法中填写Firebase配置数据
      3. 配置AuthenticationFireSocialConfigModel.appleWebAuthentication (WebAuthenticationOptions)设置。

iOS配置

  1. 访问Firebase控制台并打开项目配置。
  2. 向下滚动到您的应用部分,您将看到已配置的应用程序。
  3. 点击GoogleService-Info.plist按钮以在两个iOS应用(开发和生产)中下载配置文件。
  4. 在您的项目文件夹中,转到ios文件夹并创建一个新的名为config的文件夹(如果不存在的话)。
  5. config文件夹内为每个方案创建一个文件夹,并粘贴相应的GoogleService-Info.plist文件。
  6. 如果使用了风味项目,请确保遵循这些说明
  7. 打开您的ios/Runner/Info.plist文件并添加以下代码。
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <!-- 从GoogleService-Info.plist键复制REVERSED_CLIENT_ID -->
            <string>$(GOOGLE_REVERSED_ID)</string>
        </array>
    </dict>
</array>
  1. 对于Facebook:
    • ios/Runner/Info.plist中添加:
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{FACEBOOK_CLIENT_ID}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{FACEBOOK_CLIENT_ID}</string>
<key>FacebookClientToken</key>
<string>{FACEBOOK_CLIENT_TOKEN}</string>
<key>FacebookDisplayName</key>
<string>{App Name}</string>
      
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fbapi</string>
  <string>fb-messenger-share-api</string>
  <string>tel</string>
  <string>https</string>
  <string>http</string>
</array>
  1. 对于Apple:
    • 在XCode项目中启用Apple登录功能。

注入配置

  1. 在您的lib/core/injection_config.dart文件中,应创建一个AuthenticationFireSocialConfigModel实例并添加自定义端点,将其放在configureDependencies方法中。
final authConfig = AuthenticationFireSocialConfigModel(
    loginCredentialsAPIendpoint: () {
      return EnvironmentConfig.api_url + ApiEndpoints.login();
    },
    customLoginRequestMapper: (email, password) {
      return {
        "emailOrUsername": email,
        "password": password,
      };
    },
    signupCredentialsAPIendpoint: () {
      return EnvironmentConfig.api_url + ApiEndpoints.signup();
    },
    authenticateGoogleAPIendpoint: (_) {
      return EnvironmentConfig.api_url + ApiEndpoints.authFirebaseSocial();
    },
    authenticateFacebookAPIendpoint: (_) {
      return EnvironmentConfig.api_url + ApiEndpoints.authFirebaseSocial();
    },
    authenticateAppleAPIendpoint: (_) {
      return EnvironmentConfig.api_url + ApiEndpoints.authFirebaseSocial();
    },
);
  1. 您还需要在configureDependencies方法中调用configureAuthenticationAdvancedInjection
// 配置身份验证包
await configureAuthenticationAdvancedInjection(
  environment,
  authConfig,
  customAuthServiceFactory: (() {
    // 注册自定义的身份验证服务实现
    return CustomAuthenticationServiceImpl(
      config: authConfig,
      httpClient: getIt(),
      sharedPreferences: getIt(),
      appleSignInFacade: getIt(),
      facebookSignInFacade: getIt(),
      googleSignInFacade: getIt(),
      logger: getAuthenticationSocialLogger(authConfig),
    );
  }),
);

更多关于Flutter社交认证插件flutter_gb_authentication_fire_social的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,关于Flutter社交认证插件 flutter_gb_authentication_fire_social 的使用,下面是一个简单的代码示例,展示了如何集成和使用该插件进行社交登录。请注意,实际使用时需要根据具体需求进行调整,并确保已经正确配置了Firebase和相关社交平台的认证设置。

首先,确保你的Flutter项目已经添加了flutter_gb_authentication_fire_social依赖。在pubspec.yaml文件中添加以下依赖:

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

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

接下来,配置Firebase。你需要在Firebase控制台中为你的应用启用相应的社交平台登录(如Google、Facebook、Twitter等),并获取必要的客户端ID和密钥。确保这些配置已经正确设置在你的Firebase项目中。

下面是一个简单的示例代码,展示了如何使用flutter_gb_authentication_fire_social插件进行社交登录:

import 'package:flutter/material.dart';
import 'package:flutter_gb_authentication_fire_social/flutter_gb_authentication_fire_social.dart';
import 'package:firebase_auth/firebase_auth.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SocialLoginScreen(),
    );
  }
}

class SocialLoginScreen extends StatefulWidget {
  @override
  _SocialLoginScreenState createState() => _SocialLoginScreenState();
}

class _SocialLoginScreenState extends State<SocialLoginScreen> {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  Future<void> _signInWithGoogle() async {
    try {
      // 使用Google进行登录
      final GoogleSignInProvider googleProvider = GoogleSignInProvider();
      final UserCredential result = await FlutterGbAuthenticationFireSocial.signInWithProvider(googleProvider);
      final User? user = result.user;

      if (user != null) {
        // 登录成功,可以在这里处理用户信息
        print('User signed in: ${user.uid}');
      }
    } catch (e) {
      // 处理登录错误
      print('Error signing in with Google: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Social Login Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _signInWithGoogle,
              child: Text('Sign in with Google'),
            ),
            // 你可以在这里添加其他社交平台的登录按钮,如Facebook、Twitter等
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个使用Google进行社交登录的按钮。当用户点击该按钮时,会调用_signInWithGoogle方法,该方法使用flutter_gb_authentication_fire_social插件的signInWithProvider方法进行Google登录。

请注意,为了使用Google登录,你需要在Firebase控制台中启用Google登录,并下载并配置google-services.json文件。对于其他社交平台,步骤类似,但具体的配置和插件方法调用可能会有所不同。

此外,由于插件和Firebase SDK可能会更新,因此在实际使用时,请参考最新的官方文档和插件README文件以获取最准确的信息。

回到顶部