Facebook graph api 反应自然。在所有屏幕上检索facebook登录结果

Facebook graph api 反应自然。在所有屏幕上检索facebook登录结果,facebook-graph-api,react-native,facebook-login,react-native-fbsdk,Facebook Graph Api,React Native,Facebook Login,React Native Fbsdk,我正在制作一个带有facebook登录的react原生ios应用程序,现在需要在所有其他屏幕上检索结果数据 我有树形屏幕: Login.js Profile.js Main.js Login包含loginButton开关,该开关工作并返回控制台中的用户公共配置文件 Main包含stacknavigator并导入其他屏幕 配置文件是我想打印出登录用户名img等的地方 问题是,当onLoginFinished成功时,它会在结果中返回用户信息,但如何在其他屏幕上获取它 它看起来像是我需要的Grap

我正在制作一个带有facebook登录的react原生ios应用程序,现在需要在所有其他屏幕上检索结果数据

我有树形屏幕:

  • Login.js
  • Profile.js
  • Main.js
Login包含loginButton开关,该开关工作并返回控制台中的用户公共配置文件

Main包含stacknavigator并导入其他屏幕

配置文件是我想打印出登录用户名img等的地方

问题是,当onLoginFinished成功时,它会在结果中返回用户信息,但如何在其他屏幕上获取它

它看起来像是我需要的GraphRequestManager和infoRequest,但我不知道如何做

Main.js

'use-strict';
var React = require('react');
window.React = React;
import {AppRegistry, Text} from 'react-native';
import { StackNavigator } from 'react-navigation';

//login screen
import Login from './Login'

//profile screen
var Profile = require('./Profile.js');

const skatebayApp = StackNavigator({
  Login: {screen: Login},
  Profile: {screen: Profile},
},{
  headerMode: 'screen',
});

AppRegistry.registerComponent('skatebayApp', () => skatebayApp);
Login.js

'use-strict';
import React, { Component } from 'react';
import {
  Text,
  View,
  TouchableHighlight,
  Image,
} from 'react-native';

const FBSDK = require('react-native-fbsdk');
const {
  LoginButton,
  AccessToken,
  GraphRequest,
  GraphRequestManager,
} = FBSDK;

export default class Login extends Component{

  render(){
    return(

    <LoginButton
      onLoginFinished={
        (error, result) => {
          if (error) {
            alert("login has error: " + result.error);
          } else if (result.isCancelled) {
            alert("login is cancelled.");
          } else {

            AccessToken.getCurrentAccessToken().then((data) => {
              let accessToken = data.accessToken

              const responseInfoCallback = (error, result) => {
                if (error) {
                  console.log(error)
                  alert('Error fetching data: ' + error.toString());
                } else {
                  console.log(result)
                }
              }
              const infoRequest = new GraphRequest(
                '/me',
                {
                  accessToken: accessToken,
                    parameters: {
                      fields: {
                      string: 'email,name,first_name,last_name,picture'
                      }
                    }
                },
                responseInfoCallback,
                console.log(result)
              );
              new GraphRequestManager().addRequest(infoRequest).start()
            })
          }
        }
      } onLogoutFinished={() => console.log('signed out')}/>
  );
 }
}
“使用严格”;
从“React”导入React,{Component};
进口{
文本,
看法
触控高光,
形象,,
}从“反应本机”;
const FBSDK=require('react-native-FBSDK');
常数{
登录按钮,
AccessToken,
抓捕任务,
GraphRequestManager,
}=FBSDK;
导出默认类登录扩展组件{
render(){
返回(
{
如果(错误){
警报(“登录有错误:+result.error”);
}否则如果(结果被取消){
警报(“登录被取消”);
}否则{
AccessToken.getCurrentAccessToken()。然后((数据)=>{
让accessToken=data.accessToken
const responseInfo回调=(错误,结果)=>{
如果(错误){
console.log(错误)
警报('获取数据时出错:'+Error.toString());
}否则{
console.log(结果)
}
}
const infoRequest=新GraphRequest(
“/我”,
{
accessToken:accessToken,
参数:{
字段:{
字符串:“电子邮件、姓名、名、姓、图片”
}
}
},
响应信息回调,
console.log(结果)
);
新建GraphRequestManager().addRequest(infoRequest).start()
})
}
}
}onLogoutFinished={()=>console.log('signed out')}/>
);
}
}
Profile.js -这是我想要抓取用户信息并打印出来的地方

'use-strict';
import React, { Component } from 'react';
import {
  AppRegistry,
  Text,
  View,
  Image,
} from 'react-native';
import { StackNavigator } from 'react-navigation';


class Profile extends React.Component {

   render() {
   return (
      <View>
        <Text>Username & other info here</Text>
      </View>
   );
  }
}
module.exports = Profile;
“使用严格”;
从“React”导入React,{Component};
进口{
评估学,
文本,
看法
形象,,
}从“反应本机”;
从“react navigation”导入{StackNavigator};
类概要文件扩展了React.Component{
render(){
返回(
此处的用户名和其他信息
);
}
}
module.exports=配置文件;

希望它有任何意义,我对react native非常陌生。

将用户详细信息存储在asyncstorage中,然后您可以从任何屏幕访问它。
您可以在此处找到更多详细信息

好的,因此我会在const ResponseInfo回调或“const infoRequest”中设置“Wait AsyncStorage.setItem”?我不熟悉graph api,只需在打印用户详细信息AsyncStorage.setItem('userData',JSON.stringify(userDetails));