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'),
));
},
),
);
},
),
),
));
}