Flutter 如何解决';凭证';isn';t为类型';FacebookAuthProvider';
我正在使用从github获得的以下代码: 来自github的代码:Flutter 如何解决';凭证';isn';t为类型';FacebookAuthProvider';,flutter,dart,firebase-authentication,Flutter,Dart,Firebase Authentication,我正在使用从github获得的以下代码: 来自github的代码: Future<FirebaseUser> facebookLogin(BuildContext context) async { FirebaseUser currentUser; try { final FacebookLoginResult facebookLoginResult = await fbLogin.logIn(['email']); if
Future<FirebaseUser> facebookLogin(BuildContext context) async {
FirebaseUser currentUser;
try {
final FacebookLoginResult facebookLoginResult =
await fbLogin.logIn(['email']);
if (facebookLoginResult.status == FacebookLoginStatus.loggedIn) {
FacebookAccessToken facebookAccessToken =
facebookLoginResult.accessToken;
AuthCredential credential = FacebookAuthProvider.getCredential(
accessToken: facebookAccessToken.token);
FirebaseUser user = (await auth.signInWithCredential(credential)).user;
print("signed in" + user.displayName);
return user;
}
Future facebook登录(BuildContext上下文)异步{
FirebaseUser当前用户;
试一试{
最终FacebookLoginResult FacebookLoginResult=
等待fbLogin.logIn(['email']);
如果(facebookLoginResult.status==FacebookLoginStatus.loggedIn){
FacebookAccessToken FacebookAccessToken=
facebookLoginResult.accessToken;
AuthCredential credential=FacebookAuthProvider.getCredential(
accessToken:facebookAccessToken.token);
FirebaseUser用户=(等待身份验证登录,使用凭证(凭证)).user;
打印(“登录”+user.displayName);
返回用户;
}
我从上面的代码中得到了两个错误:
错误:应为1个位置参数,但找到0。(在[flatter\u app]lib\login\u页面上没有足够的位置参数。dart:31)
错误:未定义命名参数“accessToken”。[flatter\u app]lib\login\u页面上未定义的\u命名\u参数。dart:32)
据我所知,“FirebaseUser”和“getCredential”已贬值,因此我将其更改为User and Credential:
当前代码:
Future<User> facebookLogin(BuildContext context) async {
User currentUser;
// fbLogin.loginBehavior = FacebookLoginBehavior.webViewOnly;
// if you remove above comment then facebook login will take username and pasword for login in Webview
try {
final FacebookLoginResult facebookLoginResult =
await fbLogin.logIn(['email']);
if (facebookLoginResult.status == FacebookLoginStatus.loggedIn) {
FacebookAccessToken facebookAccessToken =
facebookLoginResult.accessToken;
AuthCredential credential = FacebookAuthProvider.Credential(
accessToken: facebookAccessToken.token);
User user = (await auth.signInWithCredential(credential)).user;
print("signed in" + user.displayName);
return user;
}
Future facebook登录(BuildContext上下文)异步{
用户当前用户;
//fbLogin.loginBehavior=FacebookLoginBehavior.webViewOnly;
//若你们删除了上面的评论,那个么facebook登录将在Webview中使用用户名和密码登录
试一试{
最终FacebookLoginResult FacebookLoginResult=
等待fbLogin.logIn(['email']);
如果(facebookLoginResult.status==FacebookLoginStatus.loggedIn){
FacebookAccessToken FacebookAccessToken=
facebookLoginResult.accessToken;
AuthCredential credential=FacebookAuthProvider.credential(
accessToken:facebookAccessToken.token);
用户用户=(使用凭证(凭证))等待身份验证登录。用户;
打印(“登录”+user.displayName);
返回用户;
}
但现在我得到了一个错误:
错误:没有为类型“FacebookAuthProvider”定义方法“Credential”。(在[Flatter\u app]lib\login\u页面未定义方法。dart:33)
我将FirebaseUser更改为User并将getCredential更改为Credential时出错了吗?
如何摆脱这个问题?拼写是
credential
,带有小写的c
。因此:
AuthCredential credential = FacebookAuthProvider.credential(
accessToken: facebookAccessToken.token);
对于这种情况,我认为文档最有帮助: