Facebook graph api 反应自然。在所有屏幕上检索facebook登录结果
我正在制作一个带有facebook登录的react原生ios应用程序,现在需要在所有其他屏幕上检索结果数据 我有树形屏幕: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
- Login.js
- Profile.js
- 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));