代码之家  ›  专栏  ›  技术社区  ›  Rafael V. Vega

React native fbsdk获取名称和电子邮件

  •  0
  • Rafael V. Vega  · 技术社区  · 6 年前

    我正在使用react 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 回复  |  直到 6 年前
        1
  •  1
  •   EDISON J    6 年前

    我在使用firebase时检索facebook登录。

    1. 导入此文件:

      从“react native firebase”导入firebase;
      从“react native fbsdk”导入{AccessToken,LoginManager};

    2. 当我单击按钮时,Firebase登录代码起作用:

      导出常量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凭据

        2
  •  0
  •   Nay    5 年前

    如果您不想使用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);
        }
      }