0

我正在使用flutter_facebook_login 插件(3.0.0)。但是我的 Facebook 电子邮件没有出现在我的 Firebase 用户标识符列中;相反,我看到了这个“--”。请帮忙!

Future loginWithFacebook() async {
    FacebookLogin facebookLogin = FacebookLogin();
    final result = await facebookLogin.logIn(['email', 'public_profile']);
    //result.accessToken.
    final token = result.accessToken.token;

    print('Facebook token userID : ${result.accessToken.permissions}');
    final graphResponse = await http.get(
        'https://graph.facebook.com/v2.12/me?fields=name,first_name,last_name,email&access_token=${token}');

    final profile = jsonDecode(graphResponse.body);
    print(profile);

    if (result.status == FacebookLoginStatus.loggedIn) {
      final credential = FacebookAuthProvider.getCredential(accessToken: token);
      
      FirebaseUser fbUser = (await _auth.signInWithCredential(credential)).user;

      //print('Our credential is : $credential');
      print('Facebook firebase user ${fbUser.}');
    }

    return _userFromFacebookLogin(profile);
  }
}
4

1 回答 1

1

可能的点。

  1. 一些 Facebook 帐户是使用手机号码创建的,因此每当我们请求电子邮件地址时,我们都会得到一个空字符串。

  2. 由于缺少阅读电子邮件的权限,电子邮件在 firebase auth 上设置为“--”,通过以下方式修复:

    final FacebookLoginResult facebookLoginResult = await facebook_Login.logIn(['email', 'public_profile']);
    
  3. 在https://groups.google.com/forum/#!topic/firebase-talk/gPGNq-IkTLo阅读了 firebase-talk google 组中的帖子后,我找到了答案。发生此问题是因为我在 Firebase Auth 登录方法中使用了“允许使用相同的电子邮件地址创建多个帐户”。

    所以我将选项更改为:“防止使用相同的电子邮件地址创建多个帐户”现在可以正常工作吗?就这么简单。确实,我需要更多逻辑来合并具有相同电子邮件地址的帐户,但这没关系。

    也许其他人有同样的问题,也可以试试这个,希望它也能解决。

于 2020-07-31T07:01:47.317 回答