Open4

Expo + Firebase 認証

izuchyizuchy
  • onAuthStateChanged で認証イベントをハンドリングできる
  • credential を各種認証プロバイダから取得してログインさせる
async function loginWithFacebook() {
  await Facebook.initializeAsync('<FACEBOOK_APP_ID>');

  const { type, token } = await Facebook.logInWithReadPermissionsAsync({
    permissions: ['public_profile'],
  });

  if (type === 'success') {
    // Build Firebase credential with the Facebook access token.
    const credential = firebase.auth.FacebookAuthProvider.credential(token);

    // Sign in with credential from the Facebook user.
    firebase
      .auth()
      .signInWithCredential(credential)
      .catch(error => {
        // Handle Errors here.
      });
  }
izuchyizuchy
  • (番外)expo-firebase-analytics を使うと Google Analytics にログ記録が可能
Analytics.logEvent('hero_spotted', {
  hero_name: 'Saitama',
});
izuchyizuchy

Email 認証

  • 登録確認 firebase.auth().fetchSignInMethodsForEmail()
  • 新規登録 firebase.auth().createUserWithEmailAndPassword()
  • 確認メール送信 firebase.auth().currentUser.sendEmailVerification()
  • ログイン firebase.auth().signInWithEmailAndPassword()
  • 仮登録状況 firebase.auth().signInWithEmailAndPassword()user.emailVerified
  • 確認メールの承認 => アプリの挙動は要確認
  • 確認メール承認後(フォアグラウド時)は onAuthStateChanged が呼ばれない模様
    • firebase.auth().currentUser.reload() で手動更新して再確認
  • トークンのリフレッシュ firebase.auth().currentUser.getIdToken(true)