如何连接 facebook、firebase 和 flutter?

Mik*_*982 3 authentication facebook firebase flutter

我正在按照将 facebook 与此处找到的 android 项目合并的说明进行操作https://developers.facebook.com/apps/318154048893918/fb-login/quickstart/并且有一个步骤可以下载 Facebook SDK,但在那之后,它没有告诉我把文件放在哪里。它告诉我添加的导入语句不起作用(说 uri 的目标不存在)。

当他们登录时,我试图将 facebook 用户添加到我们的 firebase 数据库中。我在 android studio 中使用 flutter。

控制台日志中似乎没有任何用处,除了 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;

}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ura 7

在 flutter 中,您需要使用flutter_facebook_login插件,请查看此处以了解如何获取该插件并设置您的 Flutter 应用程序以使用此插件。您还可以查看这篇文章,文章逐步介绍了如何设置您的项目并包含代码示例,但所使用的 API 已过时

这里有一个带有更新 API 的片段,显示了如何使用 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;
}
Run Code Online (Sandbox Code Playgroud)

在您的代码中,您使用的_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);
     }
}
Run Code Online (Sandbox Code Playgroud)