Open4
Expo + Firebase 認証
- Firebase が用意してくれるログイン UI は React Native(Expo) では動作しないので使わない
- SMS 認証には
expo-firebase-recaptcha
が必要
-
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.
});
}
- (番外)
expo-firebase-analytics
を使うと Google Analytics にログ記録が可能
Analytics.logEvent('hero_spotted', {
hero_name: 'Saitama',
});
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)