

CreateReactNativeAppで作成したアプリでfirebaseを通じてFacebookログインを実装したいと考えています  
ですがタイトル通り、どういうわけか`FacebookAuthProvider`が`undefined`になってしまい、先に進めません

[code]

    import firebase from 'firebase';                                                                                    
    
    const config = {                                                                                                    
      apiKey: 'API_KEY',                                                                                                
      authDomain: '****',                                                                                               
      databaseURL: '****',                                                                                              
      storageBucket: '****'                                                                                             
    };                                                                                                                  
    
    firebase.initializeApp(config);                                                                                     
    
    
    // 中略                                                                                                             
    
    
    const loginWithFb = () => {                                                                                         
      return Facebook.logInWithReadPermissionsAsync('APP_ID', {                                                         
        permissions: ['public_profile']                                                                                 
      });                                                                                                               
    };                                                                                                                  
    
    // ログインボタンのonPressにbind                                                                                    
    async onPress() {                                                                                                   
      const { type, token } = await loginWithFb();                                                                      
    
      if (type === 'success') {                                                                                         
        const credential = firebase.auth.FacebookAuthProvider.credential(token);                                        
    
        firebase.auth().signInWithCredential(credential).catch((error) => {                                             
          console.log(error);                                                                                           
        });                                                                                                             
      }                                                                                                                 
    } 
    
[/code]

問題はこの`FacebookAuthProvider`なのですが、どうも動かないと思ったらこうなっていました

[code]

    componentDidMount() {                                                                                               
      const auth = firebase.auth.FacebookAuthProvider;                                                                  
      console.log(auth);                                                                                                
      // undefined                                                                                                      
    }
    
[/code]

firebaseオブジェクトのconfig自体には、以下のメソッドが正常に使えることから、問題があるようには思えません

[code]

    // ちゃんと保存される
    firebase.database().ref('users/' + 1).set({                                                         
      name: 'hoge'                                                                                 
    }); 
    
[/code]

ライブラリが足りないのでしょうか？  
どなたかご存知の方よろしくお願いします

* * *

追記

`Object.getOwnPropertyNames(firebase)`で調べて見たところ、以下のようにすると実現できました

[code]

    // firebase_をチェーンに追加
    const credential = firebase.firebase_.auth.FacebookAuthProvider.credential(token);
    
[/code]

ただ、メソッド名を見るにこのような使い方をするべきではないのは明確なので........  
やはりどなたかご存知の方お願いいたします

なお、同じauth系であっても以下は正常に動作するようです

[code]

    firebase.auth().signInWithCredential(credential)
    firebase.auth().signOut();
    
[/code]


CC BY-SA 3.0
2018-02-21T20:59:37.760
41905
2018-02-21T20:59:37.760
15418
question
javascript firebase react-native
firebase.auth.FacebookAuthProviderがundefinedになります