flutter_slack_oauth_firebase

我们 flutter_slack_oauth 库的扩展,增加了对 Firebase 身份验证和 Cloud Firestore 的支持。

用法

  • 要使用此插件,请将 flutter_slack_oauth_firebase 添加到您的 pubspec.yaml 文件中作为依赖项。

  • 此包依赖于 Firebase Auth,因此请务必遵循那些步骤。与该包的文档不同,Firebase Auth 的 Google Sign-in 插件是不需要的!

  • 部署 firebase 文件夹中的 Firebase Functions 项目,这是将处理 OAuth 流的“后端”逻辑。您可以按照 Instagram Oauth Firebase Functions 示例中指定的步骤进行操作。

成功登录后

  • Slack 的访问令牌将存储在 Firebase Firestore 的 slackAccessToken 集合中,文档 ID 为 Slack 的 UID。
  • 从 Slack 登录返回的用户信息存储在 Firebase Firestore 的 users 集合中,文档 ID 为 Slack 的 UID。
  • 登录后,您可以轻松找到当前用户的 Slack UID
FirebaseUser user = await _auth.currentUser();
print(user.uid);

完整示例

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

void main() {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  runApp(new MaterialApp(
    home: new Scaffold(
      appBar: new AppBar(
        title: new Text("Slack OAuth Example"),
      ),
      body: new Builder(
        builder: (BuildContext context) {
          return new Center(
            child: new FirebaseSlackButton(
              clientId: "XXX_CLIENT_ID_XXX",
              clientSecret: "XXX_CLIENT_SECRET_XXX",
              redirectUrl:
              "https://XXX-FIREBASE-PROJECT-XXX.firebaseapp.com/completed.html",
              firebaseUrl:
              "https://XXX-FIREBASE-PROJECT-XXX.firebaseapp.com/index.html",
              onSuccess: () async {
                // get Firebase User:
                FirebaseUser user = await _auth.currentUser();

                Scaffold.of(context).showSnackBar(new SnackBar(
                  content: new Text('Logged in with Slack ID ' + user.uid),
                ));
              },
              onFailure: () {
                Scaffold.of(context).showSnackBar(new SnackBar(
                      content: new Text('Slack Login Failed'),
                    ));
              },
              onCancelledByUser: () {
                Scaffold.of(context).showSnackBar(new SnackBar(
                      content: new Text('Slack Login Cancelled by user'),
                    ));
              },
            ),
          );
        },
      ),
    ),
  ));
}

GitHub

https://github.com/Kunstmaan/flutter_slack_oauth_firebase