Рубрики
Без рубрики

Настройка реакции нативную аутентификацию Facebook

Настройка реакции нативную аутентификацию Facebook

Автор оригинала: Olebuezi Obinna David.

В этом руководстве я хотел бы взять вас через ступеньки того, как настроить Facebook и Google Social Login в вашем реагирующем нативном приложении.

Логин в фейсбук

Несмотря на то, что логин Facebook может звучать сложно, но действительно легко.

Настройка социального входа в систему в вашем приложении заключается в регистрации ваших идентификаторов приложений Facebook, и идентификаторы клиента Google на консоли являются первыми шагами к этой реализации.

Теперь давайте сделаем это.

Настройка идентификатора приложения для Facebook

Это идентификатор, используемый для получения авторизации для использования API Facebook, чтобы войти в свое приложение. Пожалуйста, посетите https://developers.facebook.com, чтобы войти в систему.

Шаги: Создайте новое приложение и зарегистрируйте новый идентификатор приложения Facebook. Добавить платформы Android и iOS (по мере необходимости)

Для iOS добавьте свой идентификатор пакета во время Android, добавьте имя вашего пакета и ключевые хэши

Настройка для пользователей EXPO

Это потребует установки этого пакета.

$ expo install expo-facebook

На вашем экране входа в систему добавить кнопку «Вход в систему Facebook» …/Buttons/Blockbutton ‘;



  
  
    
  


Также обязательно инициируйте разрешения в Ase Excefect Accept Conformying Your Facebook ID приложения.

import React, { useEffect, useState, useContext } from 'react';
import * as Facebook from 'expo-facebook';

import { FB_APP_ID } from '../config/constants';


const initSocialLogin = async () => {
  try {
    await Facebook.initializeAsync(FB_APP_ID);
  } catch (e) {
    console.log(e);
  }
};


useEffect(() => {
  initSocialLogin();
}, []);

Окончательный код реализации

С намерениями генерации выставки в автономном виде вы должны добавить Facebookscheme, FacebookAppid, AndFacebookDisPlayName в ваш файл App.json, как видно в документации Facebook (шаг 4).

Теперь давайте обновим наш компонент входа в систему.

import { FB_APP_ID } from '../config/constants';

//...

export const fbLogin = async () => {
  try {
    const { token, type } = await Facebook.logInWithReadPermissionsAsync(
      FB_APP_ID,
      {
        permissions: ['public_profile'],
      }
    );

    // GET USER DATA FROM FB API
    const response = await fetch(
      `https://graph.facebook.com/me?access_token=${token}`
    );
    const user = await response.json();

    // GET PROFILE IMAGE DATA FROM FB API
    // NOTE THAT I SET THE IMAGE WIDTH TO 500 WHICH IS OPTIONAL
    const pictureResponse = await fetch(
      `https://graph.facebook.com/v8.0/${user.id}/picture?width=500&redirect=false&access_token=${token}`
    );
    const pictureOBject = await pictureResponse.json();
    const userObject = {
      ...user,
      photoUrl: pictureOBject.data.url,
    };

    return { type, token, user: userObject };
  } catch (e) {
    return { error: e };
  }
};

const handleFBLoginPress = async () => {
    const { type, token, user, error } = await fbLogin();

    if (type && token) {
      if (type === 'success') {
        // DISPATCH TOKEN AND USER DATA
        // TO HANDLE NAVIGATION TO HOME AND DISPLAY USER INFO
        dispatch({ type: 'FB_LOGIN', token, user });
      }
    } else if (error) {
      console.log('The login attempt was cancelled');
    }
  };

Заключение

Включение входит в систему, где вы хотите сделать ваш логин, включить режим производства в консоли разработчиков Facebook.

Счастливое кодирование.