質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.09%

facebook authでRNFirebaseエラーが出てしまっている(react native)

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 967

yamady

score 172

いつもお世話になっています。
React Nativeでアプリ開発を始めた初心者です。

最近はReact Nativeのエラー赤画面が夢にまで出てくるようになりました(汗)
今、Facebook認証を実現したいと思って、昨日react-native-firebaseドキュメントをみながら、こちらやってみたのですが、どうもやり方を混乱してしまい、せっかく親切な方にすぐにご回答いただいたのですが(本当にありがとうございます!)

下記のURLをみながらやり直してみました。
https://codeburst.io/react-native-app-with-facebook-sdk-login-and-firebase-storage-606744701207

こちらは公式のドキュメントと異なり、react-native-facebook-loginを使っているみたいです。

ですが、やはり途中でエラーから抜けられなくなってしまいました。

 エラー

シュミレーター上

ExceptionsManager.js:65 RNFirebase core module was not found natively on iOS, ensure you have correctly included the RNFirebase pod in your projects `Podfile` and have run `pod install`.

Xcode上

ld: warning: object file (/Users/shyamada/Library/Developer/Xcode/DerivedData/fbutton-hhjdppbukqrtchehuzbsjrzuqglf/Build/Products/Debug-iphonesimulator/libPods-fbutton.a(Pods-fbutton-dummy.o)) was built for newer iOS version (9.0) than being linked (8.0)
ld: framework not found FBSDKLoginKit for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

ターミナル上

** BUILD FAILED **


The following build commands failed:
    Ld build/Build/Products/Debug-iphonesimulator/fbutton.app/fbutton normal x86_64
(1 failure)

Installing build/Build/Products/Debug-iphonesimulator/fbutton.app
An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=22):
Failed to install the requested application
The bundle identifier of the application could not be determined.
Ensure that the application's Info.plist contains a value for CFBundleIdentifier.
Print: Entry, ":CFBundleIdentifier", Does Not Exist

Command failed: /usr/libexec/PlistBuddy -c Print:CFBundleIdentifier build/Build/Products/Debug-iphonesimulator/fbutton.app/Info.plist
Print: Entry, ":CFBundleIdentifier", Does Not Exist

 ソースコード

公式にしたがって、Firebaseの設定をしたのちに下記のコードを書きました。

Podfile

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'fbutton' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks

  # Pods for fbutton

  # Required by RNFirebase
  pod 'Firebase/Core'
  pod 'Firebase/Auth'

end

App.js

import React, { Component } from 'react';
import {
  StyleSheet,
  Text,
  View,
  Button
} from 'react-native';
import { handleFbLogin } from './src/lib/auth';
export default class App extends Component<{}> {
  render() {
    return (
      <View style={styles.container}>
      <Button
        onPress={handleFbLogin}
        title="Sign in with facebook"
        color="#3c50e8"
      />
      </View>
    );
  }
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  }
});

config/auth.js

import { FBLoginManager } from 'react-native-facebook-login';
const Facebook = {
  login: (permissions) => {
    return new Promise((resolve, reject) => {
      FBLoginManager.loginWithPermissions(permissions || ['email'], (error, data) => {
        if (!error) {
          resolve(data.credentials.token);
        } else {
          reject(error);
        }
      });
    });
  },
  logout: () => {
    return new Promise((resolve, reject) => {
      FBLoginManager.logout((error, data) => {
        if (!error) {
          resolve(true);
        } else {
          reject(error);
        }
      });
    });
  }
}
const Auth = { Facebook };
export default Auth;

config/firebase.js

import RNFirebase from 'react-native-firebase'
const configurationOptions = {
  debug: true
}
const firebase = RNFirebase.initializeApp()
export default firebase;

constants/index.js

export const fbLoginPermissions = ['email'];

lib/auth/index.js

import { fbLoginPermissions } from '../../constants/index';
import firebase from '../../config/firebase';
import Auth from '../../config/auth';
export const handleFbLogin = () => (
  Auth.Facebook.login(fbLoginPermissions)
    .then((token) => {
      firebase.auth()
        .signInWithCredential(firebase.auth.FacebookAuthProvider.credential(token))
    })
    .catch((err) => this.onError && this.onError(err))
);

 試してみたこと

StackOverflowなどみながら
pod install、pod update、pod outdateはそれぞれ何度も繰り返しました
Podfileのuser_frameworks!コメントアウトもしてみましたが効果なしです(涙)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

公式のドキュメントを見ながら進めてみたら解決しました!

https://rnfirebase.io/docs/v3.2.x/auth/social-auth

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/02 14:45 編集

    私も、現在同じエラー出ています。。。
    どのようにして解決したのか教えていただけますでしょうか?

    キャンセル

  • 2019/03/09 14:16

    返事遅れてしまい、すみません。
    どのあたりでスタックしておりますでしょうか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる