SlideShare a Scribd company logo
ログインのすべて
React Native + Expo + Firebaseで猛スピード実装
自己紹介
佐藤 大生(サトウ ダイキ)
Twitter:@daiyanyanyan
経歴
・フリーランスのスマホアプリエンジニア
・エンジニア歴8年
・React Native 現場で3年
・今まで6本React Nativeのアプリリリース済
・マリクルエンジニア
・React Native Tech Blogの運営中
ログイン
①バックエンド言語 + フレームワーク(Ruby on Rails, Laravel)(マリクルこれ)
②Firebase (今日話すのこっち)
実装方法
ログインがないアプリはない! (セキュリティ ?パスワード再設定?)
→ 実装が大変、いきなり挫折
Firebase
・Cloud Firestore
・Cloud Storage for Firebase
・Firebase Authentication
・Firebase Cloud Messaging
・Google Cloud Functions for Firebase
・Firebase Hosting
匿名
Email/Password
電話番号
Google
Play Games
Game Center
Facebook
Twitter
GitHub
Yahoo
Microsoft
Apple
Google が提供しているモバイルおよび
Web アプリケーションのバックエンドサービスです。
Auth一覧
プロジェクトの作成とFirebaseの呼び出し
詳細はここで https://tech.maricuru.com/entry/2020/02/09/212256
手順
----ブラウザ作業---
①Firebaseプロジェクトを作成
②Authenticationを設定→Keyが払い出させる
----ターミナル作業---
③firebaseをインストール
----コーディング---
④configファイルの作成
import firebase from 'firebase';
export const firebaseConfig = {
apiKey: '----',
authDomain: ----',
databaseURL: ----',
projectId: ----',
storageBucket: ----',
messagingSenderId: ----',
appId: ----',
measurementId: ----',
};
export default firebase;
src/configs/firebase.js
yarn add firebase
UIの実装
<View>
<TextInput
style={styles.textInput}
value={email}
onChangeText={(text: string): void => setEmail(text)}
placeholder="Email"
/>
<TextInput
style={styles.textInput}
value={password}
onChangeText={(text: string): void => setPassword(text)}
placeholder="Password"
secureTextEntry
/>
<Button title="登録" onPress={(): void => emailSignUp(email, password)} />
</View>
メールアドレスログイン 難易度★
import firebase from '../configs/firebase';
// メールアドレスでユーザ登録
export const emailSignUp = (email: string, password: string): void => {
Firebase
.auth()
.createUserWithEmailAndPassword(email, password)
.then(user => {
if (user) { console.log('Success to Signup');}
})
.catch(error => {
console.log(error);
});
};
export default firebase;
匿名ログイン 難易度★
// 匿名ログインユーザ登録
export const anonymousSignUp = (): void => {
Firebase
.auth()
.signInAnonymously()
.then(user => {
if (user) { console.log('Success to Signup');}
})
.catch(error => {
console.log(error);
});
};
電話番号ログイン 難易度★★★★★
・今まで通りはいかない!(関数呼び出せばいいだけじゃない)
・reCAPTYAで実装する
・Hostingする必要がある
(FIreabaseにHosting機能がある)
手順
①Firebase Hostingのインストール
②captcha.htmlの作成
③deploy
④実装
Facebookログイン 難易度★★
手順
①Facebook for Developersの登録
②パッケージのインストール
③実装
yarn add expo-facebook
export const facebookSignUp = async () => {
await Facebook.initializeAsync(facebookConfig.ApplicationKey, '-----');
const { type, token } = await Facebook.logInWithReadPermissionsAsync(
facebookConfig.ApplicationKey,
{
permissions: ['public_profile'],
}
).catch(e => {
console.log(e);
throw e;
});
if (type === 'success') {
try {
const credential = FacebookAuthProvider.credential(token);
const user = await firebase.auth().signInWithCredential(credential);
return user;
} catch (error) {
console.log(error);
}
}
}
Googleログイン 難易度★★★
手順
①Google Developに登録
②パッケージのインストール
③実装
yarn add expo-google-app-auth
export const goolgeSignUp = async () => {
try {
const result = await Google.logInAsync({
behavior: 'web',
androidClientId:
'--------',
iosClientId:
'--------',
scopes: ['profile', 'email'],
});
if (result.type === 'success') {
onSignInGoolge(result);
return result.accessToken;
}
return { cancelled: true };
} catch (e) {
return { error: true };
}
};
まとめ
・ログイン実装はFirebaseの利用がオススメ
・何でログインするかは超考えるべき。少ない方がいい
・匿名、メールアドレス/パスワードのみなら本当に楽
・TwitterはExpoがサポートしていない → 実装少し大変
・Facebook、Googleはサポートしている → ExpoVersion変わるごとに要試験
・電話番号はreCAPTYAすることでできる
・ググル時は、Expo使っている?Version何を意識!
React Nativeエンジニア募集中
株式会社マリクル
副業歓迎!(週1〜)
リモート可
お互いの都合合えば正社員雇用あり!
マリクル代表の高木までDMください (@nr_tkg)

More Related Content

Similar to ログインの全て

ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
 
React Native + Expoでアプリを開発してみた話
React Native + Expoでアプリを開発してみた話React Native + Expoでアプリを開発してみた話
React Native + Expoでアプリを開発してみた話
GIG inc.
 
Realm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみてRealm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみて
Daisuke Nagata
 
RESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptxRESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptx
Yuya55
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
DIVE INTO CODE Corp.
 
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門
Kazuhiro Yoshimoto
 
``完璧に理解した``WEB の裏側の仕組み.pptx
``完璧に理解した``WEB の裏側の仕組み.pptx``完璧に理解した``WEB の裏側の仕組み.pptx
``完璧に理解した``WEB の裏側の仕組み.pptx
Ryo Higashigawa
 
The First React on Rails
The First React on Rails The First React on Rails
The First React on Rails
Kohei Ito
 
Storybook web-and-circleci
Storybook web-and-circleciStorybook web-and-circleci
Storybook web-and-circleci
Jesse Katsumata
 
Type script出始めるfirebaseプログラミング
Type script出始めるfirebaseプログラミングType script出始めるfirebaseプログラミング
Type script出始めるfirebaseプログラミング
浩史 橋本
 
Flex入門
Flex入門Flex入門
Flex入門
Shinjiro Watanabe
 
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみたFirebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Tomoe Sawai
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
Kazuaki KURIU
 
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろうWindowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろう
keitasudo1
 
Firebase hands on_#1
Firebase hands on_#1Firebase hands on_#1
Firebase hands on_#1
Yuichi Morioka
 
Rubykaigi2010
Rubykaigi2010Rubykaigi2010
Rubykaigi2010
masaki yamada
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
Kouhei Sutou
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装
Kenjiro Kubota
 
Develop simpleappwithreacthooks
Develop simpleappwithreacthooksDevelop simpleappwithreacthooks
Develop simpleappwithreacthooks
Genki Amagata
 
React Native 入門
React Native 入門React Native 入門
React Native 入門
Seiichi Okumiya
 

Similar to ログインの全て (20)

ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
React Native + Expoでアプリを開発してみた話
React Native + Expoでアプリを開発してみた話React Native + Expoでアプリを開発してみた話
React Native + Expoでアプリを開発してみた話
 
Realm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみてRealm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみて
 
RESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptxRESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptx
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門
 
``完璧に理解した``WEB の裏側の仕組み.pptx
``完璧に理解した``WEB の裏側の仕組み.pptx``完璧に理解した``WEB の裏側の仕組み.pptx
``完璧に理解した``WEB の裏側の仕組み.pptx
 
The First React on Rails
The First React on Rails The First React on Rails
The First React on Rails
 
Storybook web-and-circleci
Storybook web-and-circleciStorybook web-and-circleci
Storybook web-and-circleci
 
Type script出始めるfirebaseプログラミング
Type script出始めるfirebaseプログラミングType script出始めるfirebaseプログラミング
Type script出始めるfirebaseプログラミング
 
Flex入門
Flex入門Flex入門
Flex入門
 
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみたFirebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろうWindowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろう
 
Firebase hands on_#1
Firebase hands on_#1Firebase hands on_#1
Firebase hands on_#1
 
Rubykaigi2010
Rubykaigi2010Rubykaigi2010
Rubykaigi2010
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装
 
Develop simpleappwithreacthooks
Develop simpleappwithreacthooksDevelop simpleappwithreacthooks
Develop simpleappwithreacthooks
 
React Native 入門
React Native 入門React Native 入門
React Native 入門
 

ログインの全て