Ошибка типа: undefined не является объектом (оценка '_ExponentFacebook.default.initializeAsyn c') - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь использовать Facebook Auth для своего собственного проекта реагирования на основе firebase, и я сталкиваюсь с этой ошибкой TypeError в методе InitalizeAsyn c.

import * as Facebook from 'expo-facebook';

export const loginWithFacebook = async () => {
  await Facebook.initializeAsync('ID_OF_APP');
  const {type, token}: any = await Facebook.logInWithReadPermissionsAsync({
    permissions: ['public_profile', 'email'],
  });

Я пытался устранить эту проблему для последний день или около того.

ID_OF_APP только в вопросе ... не мой настоящий код (ради облегчения понимания этого вопроса для будущих зрителей).

1 Ответ

0 голосов
/ 20 апреля 2020

Попробуйте этот метод

import { AccessToken, LoginManager } from "react-native-fbsdk"

        state = {
                email: '',
                sso_token: '',
                sso_uid: '',
                loading: false,
            }    

initUser(token) {
    axios({
        method: 'GET',
        url: `https://graph.facebook.com/v2.5/me?fields=email,name,friends&access_token=${token}`,
        responseType: 'json'
    }).then((response) => {

        const { data } = response

        const { first_name, last_name } = this.split_name(data.name)

        this.setState(
            { sso_token: token, sso_uid: data.id, email: data.email, first_name, last_name },
        )
    }).catch((err) => { console.warn(err) })
}

 onFBSignin() {
    this.setState({ loading: true })

    LoginManager.logInWithPermissions(["email", "public_profile"])
        .then(result => {
            if (result.isCancelled) {
                this.setState({ loading: false })
            }
            else {
                AccessToken.getCurrentAccessToken()
                    .then((data) => {
                        const { accessToken } = data
                        this.initUser(accessToken)
                    })
                    .catch((error) => {
                        console.warn(error)
                    })
            }
        })
        .catch(error => {
            console.warn(error)
            this.setState({ loading: false })
        }
...