Flutter社交登录插件facebook_google_social_login的使用

Flutter社交登录插件facebook_google_social_login的使用

本文将介绍如何在Flutter项目中使用facebook_google_social_login插件来实现社交登录功能。通过该插件,您可以轻松集成Facebook和Google的登录功能。

特性

  • 支持Facebook和Google登录。
  • 提供简单易用的API接口。
  • 兼容多种设备平台(如Android和iOS)。

使用步骤

1. 添加依赖

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

dependencies:
  facebook_google_social_login: ^1.0.0 # 请确保使用最新版本

然后运行以下命令以获取依赖:

flutter pub get

2. 初始化插件

在应用程序的入口文件中初始化插件。通常是在main.dart文件中完成初始化。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SocialLoginExample(),
    );
  }
}

3. 配置Facebook和Google登录

Facebook配置

  1. 在Facebook开发者平台创建应用,并获取APP_ID
  2. android/app/src/main/res/values/strings.xml中添加以下内容:
<resources>
  <string name="facebook_app_id">YOUR_FACEBOOK_APP_ID</string>
  <string name="facebook_client_token">YOUR_FACEBOOK_CLIENT_TOKEN</string>
</resources>
  1. android/app/src/main/AndroidManifest.xml中添加以下权限和meta-data:
<uses-permission android:name="android.permission.INTERNET"/>

<application>
  ...
  <meta-data android:name="com.facebook.sdk.ApplicationId"
             android:value="@string/facebook_app_id"/>
  <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name" />
  <activity
      android:name="com.facebook.CustomTabActivity"
      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="@string/fb_login_protocol_scheme" />
      </intent-filter>
  </activity>
</application>

Google配置

  1. 在Google开发者平台创建应用,并获取CLIENT_ID
  2. ios/Runner/Info.plist中添加以下内容:
<key>GIDSignInClientID</key>
<string>YOUR_GOOGLE_CLIENT_ID</string>

4. 实现登录逻辑

接下来,我们将实现Facebook和Google的登录逻辑。

class SocialLoginExample extends StatefulWidget {
  [@override](/user/override)
  _SocialLoginExampleState createState() => _SocialLoginExampleState();
}

class _SocialLoginExampleState extends State<SocialLoginExample> {
  String _loginResult = '未登录';

  Future<void> _loginWithFacebook() async {
    try {
      final result = await FacebookGoogleSocialLogin.loginWithFacebook();
      setState(() {
        _loginResult = '登录成功: ${result.accessToken}';
      });
    } catch (e) {
      setState(() {
        _loginResult = '登录失败: $e';
      });
    }
  }

  Future<void> _loginWithGoogle() async {
    try {
      final result = await FacebookGoogleSocialLogin.loginWithGoogle();
      setState(() {
        _loginResult = '登录成功: ${result.idToken}';
      });
    } catch (e) {
      setState(() {
        _loginResult = '登录失败: $e';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('社交登录示例'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _loginWithFacebook,
              child: Text('Facebook登录'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _loginWithGoogle,
              child: Text('Google登录'),
            ),
            SizedBox(height: 20),
            Text(_loginResult),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter中使用facebook_google_social_login插件可以实现Facebook和Google的社交登录功能。以下是如何使用该插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  facebook_google_social_login: ^0.1.0 # 请使用最新版本

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

2. 配置Facebook和Google登录

配置Facebook登录

  1. Facebook开发者平台上创建一个应用。
  2. 获取App IDApp Secret
  3. android/app/src/main/AndroidManifest.xml中添加以下内容:
<meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id"/>

android/app/src/main/res/values/strings.xml中添加:

<string name="facebook_app_id">YOUR_FACEBOOK_APP_ID</string>
  1. ios/Runner/Info.plist中添加以下内容:
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fbYOUR_FACEBOOK_APP_ID</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>YOUR_FACEBOOK_APP_ID</string>
<key>FacebookDisplayName</key>
<string>YOUR_APP_NAME</string>

配置Google登录

  1. Google Cloud Console上创建一个项目。
  2. 启用Google Sign-In API。
  3. 创建OAuth 2.0客户端ID,获取Web Client IDiOS Client ID
  4. android/app/src/main/AndroidManifest.xml中添加以下内容:
<meta-data
    android:name="com.google.android.gms.auth.api.signin.GoogleSignInOptions"
    android:value="@string/google_client_id"/>

android/app/src/main/res/values/strings.xml中添加:

<string name="google_client_id">YOUR_GOOGLE_CLIENT_ID</string>
  1. ios/Runner/Info.plist中添加以下内容:
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>YOUR_REVERSED_CLIENT_ID</string>
    </array>
  </dict>
</array>

3. 使用插件进行登录

在你的Flutter代码中,使用facebook_google_social_login插件来执行社交登录。

import 'package:flutter/material.dart';
import 'package:facebook_google_social_login/facebook_google_social_login.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 FacebookGoogleSocialLogin _socialLogin = FacebookGoogleSocialLogin();

  Future<void> _facebookLogin() async {
    try {
      final result = await _socialLogin.signInWithFacebook();
      print('Facebook Login Result: $result');
    } catch (error) {
      print('Facebook Login Error: $error');
    }
  }

  Future<void> _googleLogin() async {
    try {
      final result = await _socialLogin.signInWithGoogle();
      print('Google Login Result: $result');
    } catch (error) {
      print('Google Login Error: $error');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Social Login'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _facebookLogin,
              child: Text('Login with Facebook'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _googleLogin,
              child: Text('Login with Google'),
            ),
          ],
        ),
      ),
    );
  }
}

4. 处理登录结果

signInWithFacebooksignInWithGoogle方法会返回一个SocialLoginResult对象,包含用户的基本信息(如ID、姓名、电子邮件等)和访问令牌。

class SocialLoginResult {
  final String id;
  final String name;
  final String email;
  final String accessToken;

  SocialLoginResult({
    required this.id,
    required this.name,
    required this.email,
    required this.accessToken,
  });
}

你可以根据返回的结果来处理用户的登录状态。

5. 注销

你可以使用signOut方法来注销用户:

await _socialLogin.signOut();
回到顶部