如何连接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

本地主机上的 Firebase Facebook 身份验证

如何让来自 Firebase 控制台的通知像 Facebook 和其他应用一样弹出?

如何在使用 redux 登录 facebook/expo 和 firebase 后显示用户数据