ReactNative - 在 FBSDK 中呈现 userInfo 时使用数组错误呈现一组子项?

Posted

技术标签:

【中文标题】ReactNative - 在 FBSDK 中呈现 userInfo 时使用数组错误呈现一组子项?【英文标题】:ReactNative - render a collection of children using array error when rendering userInfo in FBSDK? 【发布时间】:2021-02-05 12:33:16 【问题描述】:

我正在尝试在功能组件中构建 facebook signIN 并面临以下错误: 错误 - 对象作为 React 子对象无效(找到:带有键 data 的对象)。如果您打算渲染一组子项,请改用数组。

以下是代码 sn-p: 从'react'导入反应,片段,useEffect,useState; 导入 SafeAreaView, ScrollView, StatusBar, StyleSheet,Text, TouchableOpacity, View,Image,Button 来自'react-native'; 从 'react-native-fbsdk' 导入 AccessToken, LoginButton ;

   const App = () => 
   const [loggedIn, setLoggedIn] = useState(false);
   const [fbUserInfo, setFbUserInfo] = useState(data: '');

   return (
           <Fragment>
           <StatusBar barStyle="dark-content" />
           <SafeAreaView>
           <ScrollView  contentInsetAdjustmentBehavior="automatic"
    style=styles.scrollView>
    <View style=styles.body>
      <View style=styles.sectionContainer>
        <LoginButton
          onLoginFinished=(error, result) => 
            if (error) 
              console.log('login has error: ' + result.error);
             else if (result.isCancelled) 
              console.log('login is cancelled.');
             else 
              console.log(result);
              AccessToken.getCurrentAccessToken().then((data) => 
                //setLoggedIn(true);
                setFbUserInfo(data.userID);
                console.log("Login", data, data.accessToken.toString());
              );
            
          
          onLogoutFinished=() => 
           //setLoggedIn(false);
           setFbUserInfo(data:'');
          
        />
      </View>
      <View style=styles.buttonContainer>
        !loggedIn && (
          <Text>You are currently logged out</Text>
        )
      </View>
      (
        <View>
          <View style=styles.listHeader>
            <Text>User Info</Text>
          </View>
          <View style=styles.detailContainer>
            <Text style=styles.title>ID</Text>
            <Text style=styles.message>fbUserInfo</Text>
          </View>
        </View>
      )
      </View>
       </ScrollView>
      </SafeAreaView>
       </Fragment>
     );
    ;


    export default App;

请帮我解决问题,谢谢

【问题讨论】:

【参考方案1】:

试试这个

AccessToken.getCurrentAccessToken().then((data) => 
   const  accessToken  = data;

fetch('https://graph.facebook.com/v2.5/me?fields=email,name,friends&access_token=' + accessToken)
  .then((response) => response.json())
  .then((json) => 
    // Some user object has been set up somewhere, build that user here
    const userID = json.id;
    
    //setLoggedIn(true);
    setFbUserInfo(data: userID);
  )
  .catch(() => 
    reject('ERROR GETTING DATA FROM FACEBOOK')
  );
);

【讨论】:

这很有帮助,因为 json 返回 id 和 name 如何将其存储在 setFbUserinfo 中?【参考方案2】:

我用这个解决了;

 const [fbUserInfo, setFbUserInfo] = useState('');

 onLogoutFinished=() => 
               setLoggedIn(false);
               setFbUserInfo('');
              

【讨论】:

以上是关于ReactNative - 在 FBSDK 中呈现 userInfo 时使用数组错误呈现一组子项?的主要内容,如果未能解决你的问题,请参考以下文章

Facebook AppLinkData fetchDeferredApplinkData ReactNative

无法链接 react-native-fbsdk iOS

是否可以更改 FBSDK 的图形 API 版本?

如何找到与我的 react native 版本兼容的 fbsdk 版本?

为 iOS React-Native 项目设置 Fbsdk 框架

React Native FBSDK 无效的密钥哈希。 Keyhash 已添加到 developer.facebook 并且应用程序已上线