ionic4 facebook 登录捕获 "user" 作为错误取消

ionic4 facebook login catches "user" cancelled as error

在将我的问题标记为重复之前,请注意我已经看到一个类似的问题但没有得到正确回答,该解决方案对提出问题的人不起作用并且对我也不起作用。

我正在尝试实现离子本机 fb 登录,并在执行此操作后

我已检查用户是否已登录,但用户未登录。请问谁有解决办法

  this.faceBook.login(['public_profile', 'user_friends', 'email'])
  .then((response: FacebookLoginResponse) => {
    this.presentToast("response");
    const facebookCredential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken
    );
    firebase.auth().signInWithCredential(facebookCredential)
      .then(result => {
        var user = result.user;
        resolve(user);
      })
      .catch(err => {
        reject(err);
      });
  })
  .catch(err => {
    this.presentToast(err);
  });

吐司消息是"User cancelled"。我不知道为什么会这样。有人可以帮我吗

试试这个,因为如果你已经登录,它会抛出错误。你需要先检查用户是否登录这里是示例

 this.fb.getLoginStatus().then((res) => {
  if (res.status === 'connected') {
    //console.log('connected', res);
    this.fb.api("/" + res.authResponse.userID + "/?fields=id,email,name,picture,first_name,last_name,gender", ["public_profile"]).then((data) => {
      //console.log('data', data.email);

    })
    //


  } else {
    this.fb.login([]).then((userData) => {
      //console.log('note connected', userData);
      this.fb.api("/" + userData.authResponse.userID + "/?fields=id,email,name,picture,first_name,last_name,gender", ["public_profile"]).then((data) => {
        //console.log('data', data.email);

      })
    }).catch((error) => {
      // FB Log in error

      this.util.showErrorAlert('Something went Wrong while login');
    });
  }
});

对我有用的是降级 cordova 插件。 我在项目中有这些版本:

"@ionic-native/facebook": "^4.1.0",
"cordova-plugin-facebook4": "^4.2.1",

我删除了 ^ 以防止不需要的更新,并将我的 cordova-plugin-facebook4 降级到 4.1.0。

"@ionic-native/facebook": "4.1.0",
"cordova-plugin-facebook4": "4.1.0",

如果它不起作用,请尝试查看 cordova-plugin-facebook4 github 发布页面并检查更新日志。也许这会引导您朝着正确的方向前进。