如何连接facebook、firebase和flutter?
Posted
技术标签:
【中文标题】如何连接facebook、firebase和flutter?【英文标题】:How to connect facebook, firebase and flutter? 【发布时间】:2019-08-19 22:48:23 【问题描述】:我正在按照https://developers.facebook.com/apps/318154048893918/fb-login/quickstart/ 此处找到的将 facebook 与 android 项目合并的说明进行操作,并且有一个下载 Facebook SDK 的步骤,但在那之后,它并没有告诉我将文件放在哪里。它告诉我添加的导入语句不起作用(说 uri 的目标不存在)。
我正在尝试在他们登录时将 facebook 用户添加到我们的 firebase 数据库中。我在 android studio 中使用颤振。
控制台日志中似乎没有任何用处,除了 print 语句不打印任何内容。有什么想法吗?
这是我登录用户的代码。
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
Future<FirebaseUser> initiateFacebookLogin() async
final FacebookLoginResult result =
await facebookLogin.logInWithReadPermissions(['email', 'public_profile']);
FirebaseUser user =
await _auth.signInWithFacebook(accessToken: result.accessToken.token);
//Token: $accessToken.token
ProviderDetails userInfo = new ProviderDetails(
user.providerId, user.uid, user.displayName, user.photoUrl, user.email);
List<ProviderDetails> providerData = new List<ProviderDetails>();
providerData.add(userInfo);
print(user.displayName);
addToDatabase(user.uid, user.displayName, user.displayName, user.email);
return user;
【问题讨论】:
【参考方案1】:在 Flutter 中,您需要使用 flutter_facebook_login 插件查看here 了解如何获取该插件并设置您的 Flutter 应用以使用该插件。您还可以查看this 文章,该文章分步介绍了如何设置您的项目并包含代码示例,但使用的 API 已过时。
这里是一个带有更新 API 的 sn-p,展示了如何使用 facebook 帐户在 firebase 中实现登录。
/// This mehtod makes the real auth
Future<FirebaseUser> firebaseAuthWithFacebook(@required FacebookAccessToken token) async
AuthCredential credential= FacebookAuthProvider.getCredential(accessToken: token.token);
FirebaseUser firebaseUser = await _authInstance.signInWithCredential(credential);
return firebaseUser;
在您的代码中,您正在使用已弃用的 _auth.signInWithFacebook
方法,您应该替换为 signInWithCredential
更新您的 firebase_auth 插件版本。
///This object comes from facebook_login_plugin package
final facebookLogin = new FacebookLogin();
final facebookLoginResult = await facebookLogin
.logInWithReadPermissions(['email', 'public_profile']);
switch (facebookLoginResult.status)
case FacebookLoginStatus.error:
print("Error");
break;
case FacebookLoginStatus.cancelledByUser:
print("CancelledByUser");
break;
case FacebookLoginStatus.loggedIn:
print("LoggedIn");
/// calling the auth mehtod and getting the logged user
var firebaseUser = await firebaseAuthWithFacebook(
token: facebookLoginResult.accessToken);
【讨论】:
也可以查看this 啊哈哈好的。是的,我有 facebook 插件。所以看起来我需要做signInWithCredential,而不是signInWithFacebook。谢谢!以上是关于如何连接facebook、firebase和flutter?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Firebase 统一创建 Facebook 登录?
如何在颤动中使用facebook执行firebase身份验证[重复]
facebook SDK [Firebase Ref.,Swift] 中缺少 FBSessionStateOpen