我今年开始使用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'.
答案 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;