
React Native FB Login — это полностью совместимый с IOS и Android компонент без использования Facebook Native/Web SDK, что позволяет интегрировать Facebook Login в приложения React Native, а также поддерживает такие ответы, как username, которые устарели в Facebook. Чтобы использовать этот компонент, разработчикам не нужно устанавливать какие-либо собственные пакеты SDK, а также не нужно импортировать или связывать какие-либо пакеты SDK в IOS и Android с Facebook. Этот компонент полностью совместим и протестирован со всеми версиями React Native, в нем больше нет ошибок, как в других компонентах, и он очень прост в использовании.
Мы используем прямой API Facebook Graph, чтобы предотвратить импорт/связывание шагов Native SDK из Facebook.
🚨Обновление: готова свежая версия 1.0.5 с множеством новых функций 📹 https://bit.ly/33HxQ2J, пожалуйста, обновите сейчас, если вы еще не сделали это через npm or yarn
Предварительная версия iOS/Android


Настроить приложение для входа через Facebook
Вам нужно будет создать Приложение для входа в Facebook для использования с этим компонентом и + добавить Нажмите, чтобы увидеть ссылку в вашем URL-адресе перенаправления. Настройки приложения для входа в Facebook в поле ввода Valid OAuth Redirect URIs, эта ссылка требуется в приложении для входа в Facebook, поскольку она получит использовать, когда перенаправление произойдет, когда пользователь войдет в систему из вашего приложения, также вы можете управлять этим URL-адресом перенаправления из этого компонента в качестве реквизита redirectUrl='YOUR_REDIRECT_URL' для сценариев на стороне сервера, таких как PHP, JSP, nodeJSдля хранения информации о пользователе, например token,first_name,last_name, когда пользователь войдет в систему, но это по желанию. Если вы уже создали приложение для входа в Facebook, вы можете пропустить все шаги, кроме добавления URL-адреса перенаправления в настройках приложения для входа в Facebook в поле ввода Valid OAuth Redirect URIs. Когда все будет готово, вам просто нужно получить clientId и secretKey из приложения для входа в Facebook, этому компоненту понадобятся эти реквизиты позже.
Примечание. Когда вы создаете новый Facebook Login App, по умолчанию для режима приложения всегда установлено значение development, и этот компонент отлично работает с ним, но когда вы будете готовы загрузить свое приложение React Native в магазины приложений, не забудьте отправить свое Facebook Login App на проверку, чтобы изменить его статус. из режима development в режим public.
Установка
установите пакет react-native-fblogin в свой проект или клонируйте проект Пример:
yarn add @fadidev/react-native-fblogin
Или, если используется npm:
npm install @fadidev/react-native-fblogin
использование
логин с разрешениями()
В этом репозитории представлены доступные реквизиты:
Это должно вызываться при нажатии кнопки Login в вашем приложении React Native.
import React, { Component } from 'react'
import { View, Button } from 'react-native'
import { loginInWithPermissions } from '@fadidev/react-native-fblogin'
export default class App extends Component {
state = {
login: false
}
/*
runNow: default is TRUE you can skip this prop, (optional)
redirectUrl: default is https://facebook.com/connect/login_success.html, you can skip or replace with your URL, (optional)
getMyInformationsFields: default is id,first_name,last_name,name,email,picture you can skip it or add more, (optional)
clientId: default is null and its required
secretKey: default is null and its required
onLoginSuccess: default returns console.log({...data})
when login success
onLoginFailure: default returns console.log({...error})
when something fails
*/
loginIn = () => {
const { login } = this.state
if (login) {
return loginInWithPermissions({
runNow: true,
redirectUrl: 'https://facebook.com/connect/login_success.html',
getMyInformationsFields:['id,first_name,last_name,name,email,picture'],
clientId: 'REPLACE_WITH_YOUR_APP_ID',
secretKey: 'REPLACE_WITH_YOUR_SECRET_KEY',
onLoginSuccess: data => console.log(data),
onLoginFailure: error => console.log(error)
})
}
}
render() {
const { loginIn } = this
return (
<View style={{
flex: 1,
justifyContent: 'space-evenly',
width: '50%',
alignSelf: 'center',
marginVertical: '10%'}}>
<Button onPress={() => this.setState({ login: true })} title='Login'/>
{loginIn()} // mounting the component when button clicked
</View>
)
}
}
Ответ:
{
access_token: string,
email: string,
expires_in: integer,
first_name: string,
id: string,
isLoggedIn: boolean,
last_name: string,
name: string,
picture: {
data: {
height: integer,
is_silhouette: boolean,
url: string,
width: integer
}
},
token_type: string
}
⚡ получить имя пользователя ()
Это даст вам username, когда пользователь войдет в систему, и это deprecated by Facebook long back, но здесь оно доступно, может получить доступ к любому компоненту
import React, { Component } from 'react'
import { View, Button } from 'react-native'
import { getUsername } from '@fadidev/react-native-fblogin'
export default class App extends Component {
render() {
return (
<View style={{
flex: 1,
justifyContent: 'space-evenly',
width: '50%',
alignSelf: 'center',
marginVertical: '10%'}}>
<Button
onPress={() => {
getUsername()
.then(username => console.log(username))
.catch(error => console.log(error))
}}
title='getUsername'
/>
</View>
)
}
}
Ответ:
{
username: string
}
получитьтокен доступа()
Это даст вам user_token, когда пользователь войдет в систему, сможет получить доступ к любому компоненту
import React, { Component } from 'react'
import { View, Button } from 'react-native'
import { getAccessToken } from '@fadidev/react-native-fblogin'
export default class App extends Component {
render() {
return (
<View style={{
flex: 1,
justifyContent: 'space-evenly',
width: '50%',
alignSelf: 'center',
marginVertical: '10%'}}>
<Button onPress={() => alert(JSON.stringify(getAccessToken()))} title='getAccessToken'/>
</View>
)
}
}
Ответ:
{ accessToken: string, expiresIn: string, status: boolean }
получитьмоюинформацию()
Это даст вам first_name,last_name,id,picture подобных деталей, к которым можно получить доступ в любом компоненте
import React, { Component } from 'react'
import { View, Button } from 'react-native'
import { getMyInformations } from '@fadidev/react-native-fblogin'
export default class App extends Component {
render() {
return (
<View style={{
flex: 1,
justifyContent: 'space-evenly',
width: '50%',
alignSelf: 'center',
marginVertical: '10%'}}>
<Button onPress={() => alert(JSON.stringify(getMyInformations()))} title='getMyInformations'/>
</View>
)
}
}
Ответ:
{
id: double,
first_name: string,
last_name: string,
name: string,
email: string,
picture: object,
token_type: string
}
выйти()
Этого достаточно для сброса пользовательских данных в вашем приложении, доступ к которому возможен из любого компонента.
import React, { Component } from 'react'
import { View, Button } from 'react-native'
import { logout } from '@fadidev/react-native-fblogin'
export default class App extends Component {
render() {
return (
<View style={{
flex: 1,
justifyContent: 'space-evenly',
width: '50%',
alignSelf: 'center',
marginVertical: '10%'}}>
<Button onPress={() => alert(JSON.stringify(logout()))} title='logout'/>
</View>
)
}
}
Ответ:
{ message: string, status: boolean }
Содействие
Просто отправьте запрос на вытягивание!
Авторское право и лицензия
Авторские права на код и документацию принадлежат @FadiDev, 2019 г. Код выпущен под лицензией MIT.