在MacOS中,Flutter的Firebase Auth SDK中不存在SignInWithFacebook函数,但是在Windows中,该函数不存在

时间:2019-02-15 15:01:25

标签: android ios facebook firebase flutter

我今年开始使用Flutter,所以我不是专家。 我正在尝试为Android和iOS开发一款应用,其中包括使用Firebase Auth登录Google和Facebook。

首先,我在Windows的Android Studio中编写了代码,并且可以正常工作,但是当我在macOS的Android Studio中编写代码时,某些代码行无法正常工作。我已经在Firebase控制台和Facebook上为开发人员“控制台”配置了iOS项目。我没有使用CocoaPods添加框架,而是在Xcode上手动完成的。

基本上,错误是:The method 'signInWithFacebook' isn't defined for the class 'FirebaseAuth'.

screenshot

4 个答案:

答案 0 :(得分:7)

是的,方法 signInWithFacebook 已从FirebaseAuth中删除,现在我们使用带有AuthCredential和FacebookAuthProvider类的 signInWithCredential 方法来完成此项工作。我将在其中添加一些评论,以说明如何使用Facebook凭据在Firebase中进行身份验证。希望对您有帮助...

/// in some point of your code you will get facebookLoginResult 

final facebookLoginResult = await facebookLogin
        .logInWithReadPermissions(['email', 'public_profile']);
 FacebookAccessToken myToken = facebookLoginResult.accessToken;

 ///assuming sucess in FacebookLoginStatus.loggedIn
/// we use FacebookAuthProvider class to get a credential from accessToken
/// this will return an AuthCredential object that we will use to auth in firebase
 AuthCredential credential= FacebookAuthProvider.getCredential(accessToken: myToken.token);

// this line do auth in firebase with your facebook credential.
FirebaseUser firebaseUser = await FirebaseAuth.instance.signInWithCredential(credential);

/// ... do your things

答案 1 :(得分:2)

不幸的是,flutter_facebook_login 3.0.0在Flutter 1.17中被破坏了。

答案 2 :(得分:1)

似乎{{1}中的signInWithFacebook已被删除,而0.7.0被添加了。

更改日志本来可以更清楚地了解更改:https://pub.dartlang.org/packages/firebase_auth#070

另请参阅:https://github.com/flutter/plugins/commit/a444ad120418d622c4dea2882190968722abbcfe

如果您更新到较新的插件版本,您可能还会https://flutter.io/docs/development/packages-and-plugins/androidx-compatibility

答案 3 :(得分:1)

signInWithFacebook不再存在。 这是完美的工作! flutter_facebook_login 3.0.0

final FacebookLoginResult facebookLoginResult = await facebookLogin.logIn(['email', 'public_profile']);
FacebookAccessToken facebookAccessToken = facebookLoginResult.accessToken;
AuthCredential authCredential = FacebookAuthProvider.getCredential(accessToken: facebookAccessToken.token);
FirebaseUser fbUser;
fbUser = (await mAuth.signInWithCredential(authCredential)).user;