2016-08-18 4 views
0

Кто-нибудь смог с успехом интегрировать Firebase Facebook Auth в React Native. Я боролся с этим в течение нескольких часов и не могу понять, как это сделать.React Native - Firebase Facebook Auth

Вот то, что я до сих пор:

import React, { Component } from 'react'; 
import { 
    AppRegistry, 
    StyleSheet, 
    Text, 
    View 
} from 'react-native'; 

const FBSDK = require('react-native-fbsdk'); 
const { 
    LoginButton, 
    LoginManager, 
    AccessToken 
} = FBSDK; 

import Button from './src/components/button'; 

//I had this populated with the correct stuff, just removed it for the stack overflow purpose 
const firebase1 = require("firebase"); 
const firebaseConfig = { 
    apiKey: "stuff", 
    authDomain: "stuff", 
    databaseURL: "stuff", 
    storageBucket: "stuff", 
}; 
const firebase = firebase1.initializeApp(firebaseConfig); 

console.log("V2.5") 
const auth = firebase.auth(); 
const provider = firebase.auth.FacebookAuthProvider; 

class pack extends Component { 
    render() { 
    return (
     <View>   
     <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) => { 
        alert(data.accessToken.toString()) 
        console.log("lets try to sign in with provider") 

          firebase.auth().signInWithCredential(credential).catch(function(error) { 
          // Handle Errors here. 
           var errorCode = error.code; 
           var errorMessage = error.message; 
           console.log(errorMessage) 
           // ... 
           }); 




        } 
       ) 
       } 
      } 
      } 
      onLogoutFinished={() => alert("logout.")}/> 
     </View> 
    ); 
    } 

Прямо сейчас это говорит о том, что переменная провайдера я определил это undefined. Я сижу в верхней части с const provider = firebase.auth.FacebookAuthProvider;

Есть ли лучший способ приблизиться к этому? Я надеюсь, что я не один .. По его dosen't прибегая к помощи действительно кажется, что слишком много других людей, которые пытаюсь сделать это .. просто пытаюсь получить facebook авторизации на firebase работать с React Native

ответ

0
var credential = firebase.auth.FacebookAuthProvider.credential(data.accesToken) 
+0

хмм, я определяя это неправильно, получаю ошибку: не определено не является объектом (оценка «firebase.auth. FacebookAuthProvider.credential ') –

+0

вы сталкиваетесь с чем-то подобным? –

0

У меня есть успешно зарегистрирован с Facebook на Firebase.

Вот мой код.

var credential = firebase.auth.FacebookAuthProvider.credential(data.accessToken.toString()); 
firebase.auth().signInWithCredential(credential).then(function(user) { 
    console.log("Sign In Success", user); 
}, function(error) { 
    console.log("Sign In Error", error); 
}); 
0

Late к партии, но .. у нас есть полный пример более в нашей документации here.

Пример использования 'реагировать-нативный-firebase' библиотека:

import { AccessToken, LoginManager } from 'react-native-fbsdk'; 
 

 
// ... somewhere in your login screen component 
 
LoginManager 
 
    .logInWithReadPermissions(['public_profile', 'email']) 
 
    .then((result) => { 
 
    if (result.isCancelled) { 
 
     return Promise.resolve('cancelled'); 
 
    } 
 
    console.log(`Login success with permissions: ${result.grantedPermissions.toString()}`); 
 
    // get the access token 
 
    return AccessToken.getCurrentAccessToken(); 
 
    }) 
 
    .then(data => { 
 
    // create a new firebase credential with the token 
 
    const credential = firebase.auth.FacebookAuthProvider.credential(data.accessToken); 
 

 
    // login with credential 
 
    return firebase.auth().signInWithCredential(credential); 
 
    }) 
 
    .then((currentUser) => { 
 
    if (currentUser === 'cancelled') { 
 
     console.log('Login cancelled'); 
 
    } else { 
 
     // now signed in 
 
     console.warn(JSON.stringify(currentUser.toJSON())); 
 
    } 
 
    }) 
 
    .catch((error) => { 
 
    console.log(`Login fail with error: ${error}`); 
 
    });

+0

Дает мне ошибку –

+1

Этот фрагмент был использован другими и мной успешно на github repo. По крайней мере, скажите, что такое ошибка перед голосованием, поскольку это, скорее всего, ошибка пользователя. – Salakar

+1

Я «случайно» щелкнул вниз и забыл LOL, но код работает отлично, спасибо! –

Смежные вопросы