【问题标题】:How to connect facebook, firebase and flutter?如何连接facebook、firebase和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;

}

【问题讨论】:

    标签: facebook firebase authentication flutter


    【解决方案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。谢谢!
    猜你喜欢
    • 2020-06-13
    • 2022-01-20
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2021-06-24
    • 1970-01-01
    • 2022-10-06
    相关资源
    最近更新 更多