React-native fbsdk получить имя и адрес электронной почты - PullRequest
0 голосов
/ 02 мая 2018

Я работаю с реактивом-native-fbsdk. Я хочу, чтобы имя пользователя и адрес электронной почты отображались пользователю при регистрации в приложении, чтобы создать профиль для приложения, но данные не отображаются. Как я могу получить эти данные и как я могу показать их на другом экране.

Это мой код

import FBSDK from 'react-native-fbsdk'
import { LoginButton,AccessToken,GraphRequest,GraphRequestManager} from 'react-native-fbsdk';


const {
  LoginManager,
} = FBSDK;

<LoginButton
        readPermissions={['public_profile']}
          onLoginFinished={
            (error, result) => {
              if (error) {
                alert("login has error: " + result.error);
              } else if (result.isCancelled) {
                alert("login is cancelled.");
              } else {
                AccessToken.getCurrentAccessToken().then(
                  (data) => {
                    const infoRequest = new GraphRequest(
                      '/me?fields=name,picture',
                      null,
                      this._responseInfoCallback
                    );
                    // Start the graph request.
                    new GraphRequestManager().addRequest(infoRequest).start();
                  }
                )
              }
            }
          }
          onLogoutFinished={() => alert("logout.")}/>
      </View>
    );
  }
  _responseInfoCallback = (error, result) => {
    if (error) {
      alert('Error fetching data: ' + error.toString());
    } else {
      alert('Result Name: ' + result.name);
    }
  }

}

Спасибо, друзья

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Если вы не хотите использовать FireBase,

const infoRequest = new GraphRequest(
        '/me?fields=name,email,picture.type(large)',
        null,
        this._responseInfoCallback
      );
      new GraphRequestManager().addRequest(infoRequest).start();


_responseInfoCallback = (error, result) => {
    if (error) {
      alert('Error fetching data: ' + error.toString());
    } else {
      this.setState({ userName: result.name, userEmail: result.email ,userPic:result.picture.data.url});
              AsyncStorage.setItem("UserName",this.state.userName);
                    AsyncStorage.setItem("Email", this.state.userEmail);
                    AsyncStorage.setItem("UserPic", this.state.userPic);

      //  SharedPreferences.setItem("UserName", this.state.userName);
      //       SharedPreferences.setItem("Email", this.state.userEmail);
      //       SharedPreferences.setItem("UserPic", this.state.userPic);
      console.log("Picture"+ this.state.userPic + "Name" + this.state.userName + "Email" + this.state.userEmail);
    }
  }
0 голосов
/ 02 мая 2018

Я получаю логин на Facebook, используя Firebase.

  1. импортировать этот файл:

    импорт firebase из "Reaction-native-Firebase";
    import {AccessToken, LoginManager} из "act-native-fbsdk ";

  2. Код входа в Firebase работает, когда я нажимаю кнопку:

    export const fbLogin = () => {

    LoginManager.logInWithReadPermissions(["public_profile", "email"])
      .then(result => {
        if (result.isCancelled) {
          console.log("Login was cancelled");
        }
        return AccessToken.getCurrentAccessToken();
      })
      .then(data => {
        const credential = firebase.auth.FacebookAuthProvider.credential(
          data.accessToken
        );
       firebase
        .auth()
        .signInWithCredential(credential)
        .then(result => {
         Toast.show({
          text: "Sucessfully",
          position: "top"
        });
       console.log("Successfully Login", result);
     })
      .catch(error => {
       console.log("Failed", error);
         });
      })
      .catch(err => {
        console.log("fail", err);
      }); 
    

    };

Я получаю свои данные для входа в Facebook

 console.log("Successfully Login", result);

результат содержит имя пользователя, адрес электронной почты, изображение и учетные данные ..ect

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...