Не используйте bind
или старый const that = this
обходной путь.Это намного проще, если вы просто полностью переключитесь на функции стрелок, и я бы посоветовал использовать async / await.Например:
_fbAuth = async () => {
try {
let resLogin = await LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_friends']);
if(resLogin.isCancelled){
console.log('login cancelled.');
return;
}
let resTokenData = await AccessToken.getCurrentAccessToken();
if(resTokenData) {
const {accessToken, userID} = resTokenData;
let resAPI = await fetch(`https://graph.facebook.com/v2.5/me?fields=email,name,friends&access_token=${accessToken}`);
resAPI = resAPI.json();
this.setState({user_email: resAPI.email});
}
} catch (err) {
console.log(err);
}
};
Избегайте «ада обратного вызова», он выглядит намного чище и легче читается с помощью async / await.Должен работать с LoginManager, так как кажется, что он возвращает Promise.Я также добавил строки шаблона в пример и добавил возврат, когда пользователь отменил.Таким образом, нет необходимости делать отступ для всего блока * 1006. *
Кстати, вы пытаетесь получить электронную почту и друзей с помощью API, но вы не спрашиваете разрешения, это намеренно?Я все равно добавил разрешения.