Я пытаюсь получить доступ к электронной почте и имени пользователя для настройки и учетной записи, когда пользователь аутентифицируется с помощью Facebook. Я подготовил документацию для response-native-fbsdk, но я ничего не вижу.
Как получить информацию о пользователе (адрес электронной почты, имя и т.д.) Из action-native-fbsdk?
Ответ 1
Вы можете сделать что-то вроде этого (это своя версия того, что я делаю в своем приложении):
<LoginButton
publishPermissions={['publish_actions']}
readPermissions={['public_profile']}
onLoginFinished={
(error, result) => {
if (error) {
console.log('login has error: ', result.error)
} else if (result.isCancelled) {
console.log('login is cancelled.')
} else {
AccessToken.getCurrentAccessToken().then((data) => {
const { accessToken } = data
initUser(accessToken)
})
}
}
}
onLogoutFinished={logout} />
// функция initUser
initUser(token) {
fetch('https://graph.facebook.com/v2.5/me?fields=email,name,friends&access_token=' + token)
.then((response) => response.json())
.then((json) => {
// Some user object has been set up somewhere, build that user here
user.name = json.name
user.id = json.id
user.user_friends = json.friends
user.email = json.email
user.username = json.name
user.loading = false
user.loggedIn = true
user.avatar = setAvatar(json.id)
})
.catch(() => {
reject('ERROR GETTING DATA FROM FACEBOOK')
})
}
Ответ 2
В принятом ответе используется fetch
, но SDK также может выполнить этот запрос... Так что, если кому-то интересно, именно так это можно сделать с помощью SDK.
let req = new GraphRequest('/me', {
httpMethod: 'GET',
version: 'v2.5',
parameters: {
'fields': {
'string' : 'email,name,friends'
}
}
}, (err, res) => {
console.log(err, res);
});
Подробнее см. в разделе https://github.com/facebook/react-native-fbsdk#graph-requests
Ответ 3
Это поможет вам, это работает для меня
import React, { Component } from 'react';
import { View } from 'react-native';
import { LoginManager,LoginButton,AccessToken,GraphRequest,GraphRequestManager} from 'react-native-fbsdk';
export default class App extends Component<{}> {
render() {
return (
<View style={styles.container}>
<LoginButton
publishPermissions={["publish_actions"]}
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>
);
}
//Create response callback.
_responseInfoCallback = (error, result) => {
if (error) {
alert('Error fetching data: ' + error.toString());
} else {
alert('Result Name: ' + result.name);
}
}
}
Для подробного посещения здесь это поможет вам больше. Facebook Войти Реагировать