0

嗨我已经在我的反应原生应用程序中实现了Facebook登录。我没有使用sdk附带的标准按钮。一切工作正常登录是成功的。但现在我不知道如何从Facebook用户档案中提取数据,例如姓名,电子邮件。从fbsdk提取数据本机

下面是我的代码键

<TouchableHighlight onPress={() => { this._fbAuth() }}> 
          <Image source={require('../images/facebook-logo.png')} style={styles.facebook}></Image> 
         </TouchableHighlight> 
+0

https://developers.facebook.com/docs/facebook-登录/权限/概述 我不知道你需要什么数据。但是您将获得电子邮件地址访问,出生日期,姓名等基本权限。Facebook不允许获取所有用户数据。 –

回答

1

您需要使用的accessTokenLoginManager一起函数来获取令牌时登录成功

_fbAuth() { 
     LoginManager.logInWithReadPermissions(['public_profile']).then(function (result) { 
      if (result.isCancelled) { 
       console.log('Login was Cancelled'); 
      } else { 

         const { navigate } = this.props.navigation; 

       // 
       console.log('Login Successful' + result.grantedPermissions.toString()); 



      } 
     }, function (error) { 
      console.log('An error has occured' + error); 
     }) 
    } 

代码。在接收到令牌后,我们可以使用此令牌来使用facebook的图表API检索登录用户的数据。

考虑下面的代码:

import { LoginManager, AccessToken } from 'react-native-fbsdk'; 
 

 
async _fbAuth() { 
 
    let { isCancelled } = await LoginManager.logInWithReadPermissions(['public_profile','user_posts']); 
 

 
    if (!isCancelled) { 
 
     let data = await AccessToken.getCurrentAccessToken(); 
 
     let token = data.accessToken.toString(); 
 
     await afterLoginComplete(token); 
 
    } 
 
    else { 
 
     console.log('Login incomplete'); 
 
    } 
 

 
} 
 

 
const afterLoginComplete = async (token) => { 
 
    const response = await fetch(
 
     `https://graph.facebook.com/me?fields=id,name,first_name,last_name,gender,picture,cover&access_token=${token}`); 
 
    let result = await response.json(); 
 

 
    // use this result as per the requirement 
 
};

你可以学习如何使用Facebook的图形API从here