Flutter GitHub登录插件github_sign_in的使用

Flutter GitHub登录插件github_sign_in的使用

在本教程中,我们将介绍如何使用Flutter的github_sign_in插件实现GitHub登录功能。通过简单的步骤,您可以轻松集成GitHub登录到您的Flutter应用中。


获取开始

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

dependencies:
  github_sign_in: ^0.0.1

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

flutter pub get

使用步骤

1. 初始化 GitHubSignIn

在使用插件之前,您需要在GitHub开发者平台创建一个OAuth应用程序,并获取clientIdclientSecretredirectUrl

  • clientId: 您的应用程序的唯一标识符。
  • clientSecret: 您的应用程序的密码。
  • redirectUrl: 用户授权后重定向的URL。

初始化GitHubSignIn对象:

final GitHubSignIn gitHubSignIn = GitHubSignIn(
  clientId: 'YOUR_CLIENT_ID', // 替换为您的GitHub clientId
  clientSecret: 'YOUR_CLIENT_SECRET', // 替换为您的GitHub clientSecret
  redirectUrl: 'YOUR_REDIRECT_URL', // 替换为您的GitHub redirectUrl
);

2. 调用登录方法

在需要触发登录的地方调用signIn方法。例如,在按钮点击事件中:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('GitHub Login Example')),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              final GitHubSignIn gitHubSignIn = GitHubSignIn(
                clientId: 'YOUR_CLIENT_ID',
                clientSecret: 'YOUR_CLIENT_SECRET',
                redirectUrl: 'YOUR_REDIRECT_URL',
              );

              var result = await gitHubSignIn.signIn(context);

              // 处理登录结果
              switch (result.status) {
                case GitHubSignInResultStatus.ok:
                  print('登录成功!Token: ${result.token}');
                  break;

                case GitHubSignInResultStatus.cancelled:
                  print('用户取消了登录');
                  break;

                case GitHubSignInResultStatus.failed:
                  print('登录失败!错误信息: ${result.errorMessage}');
                  break;
              }
            },
            child: Text('GitHub 登录'),
          ),
        ),
      ),
    );
  }
}

3. 测试登录流程

运行应用并点击“GitHub 登录”按钮,系统将跳转到GitHub的授权页面。用户可以输入凭据完成授权。授权完成后,您将在控制台中看到返回的Token或错误信息。


完整示例代码

以下是完整的示例代码,您可以直接复制并在项目中运行:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('GitHub Login Example')),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              final GitHubSignIn gitHubSignIn = GitHubSignIn(
                clientId: 'YOUR_CLIENT_ID', // 替换为您的GitHub clientId
                clientSecret: 'YOUR_CLIENT_SECRET', // 替换为您的GitHub clientSecret
                redirectUrl: 'YOUR_REDIRECT_URL', // 替换为您的GitHub redirectUrl
              );

              var result = await gitHubSignIn.signIn(context);

              // 处理登录结果
              switch (result.status) {
                case GitHubSignInResultStatus.ok:
                  print('登录成功!Token: ${result.token}');
                  break;

                case GitHubSignInResultStatus.cancelled:
                  print('用户取消了登录');
                  break;

                case GitHubSignInResultStatus.failed:
                  print('登录失败!错误信息: ${result.errorMessage}');
                  break;
              }
            },
            child: Text('GitHub 登录'),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter中,使用github_sign_in插件可以方便地实现GitHub登录功能。以下是如何使用github_sign_in插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  github_sign_in: ^1.0.0  # 请使用最新版本

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

2. 配置GitHub OAuth应用

在GitHub上创建一个OAuth应用,获取Client IDClient Secret

  1. 登录GitHub,进入Settings -> Developer settings -> OAuth Apps
  2. 点击“New OAuth App”按钮。
  3. 填写应用名称、主页URL、回调URL等信息。
  4. 创建应用后,记录下Client IDClient Secret

3. 配置Android和iOS

Android

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

<activity android:name="com.linusu.flutter_web_auth.CallbackActivity">
    <intent-filter android:label="github_sign_in">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="YOUR_CALLBACK_URL_SCHEME" />
    </intent-filter>
</activity>

YOUR_CALLBACK_URL_SCHEME替换为你在GitHub OAuth应用中设置的回调URL的scheme部分。

iOS

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

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>YOUR_CALLBACK_URL_SCHEME</string>
        </array>
    </dict>
</array>

同样,将YOUR_CALLBACK_URL_SCHEME替换为你在GitHub OAuth应用中设置的回调URL的scheme部分。

4. 使用github_sign_in插件

在你的Flutter代码中,使用github_sign_in插件进行GitHub登录。

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

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

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

class GitHubLoginScreen extends StatelessWidget {
  final GitHubSignIn gitHubSignIn = GitHubSignIn(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
    redirectUrl: 'YOUR_REDIRECT_URL',
  );

  Future<void> _signInWithGitHub(BuildContext context) async {
    try {
      final result = await gitHubSignIn.signIn(context);
      print('Access Token: ${result.token}');
      print('User Info: ${result.user}');
    } catch (error) {
      print('Error: $error');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GitHub Login'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () => _signInWithGitHub(context),
          child: Text('Sign in with GitHub'),
        ),
      ),
    );
  }
}
回到顶部