React+Redux+typescript+firebase로 인증 기능 만드는 것이 힘든 ①
9788 단어 FirebaseReactTypeScriptredux
firebase로 인증 기능을 만들고 싶었습니다.
firebase는, 간단하게 인증 기능을 사용할 수 있도록(듯이) 되어 있기 때문에, npm로 취해 오면 나중에는 곧바로 할 수 있다. . . 했다. 찾아보면, 확실히 공식에서도 API를 부르는 방법은 있고, Qiita나 다른 블로그 등에도 여러 가지 찾아보면 나왔다. 하지만 내가 복사 활용하기 쉬운 형식으로 구현을 찾을 수 없었기 때문에 사고 팔고한 이야기. 전부 쓰면 알레이므로, 스텝으로 나누어 투고하는 제1탄.
목차
· React와 firebase로 인증 기능 만들기//①
· React와 Redux와 firebase로 인증 기능 만들기//②
・Route로 인증할지 홈 화면으로 천이할지를 나눕니다//③
React와 firebase로 인증 기능 만들기
참고 : 10분 안에 할 수 있는 React+Firebase의 GoogleAuth
간단하고 움직일 때까지 최단을 갈 수있었습니다. 다만, 나는 typescript파이므로, 조금 만났습니다.
1로부터의 순서는 상기의 기사를 참고로 해 주세요. 위와 다른 것은 create-react-app
에 typescript 옵션을 붙인 것 정도입니다. (수수하게 js에서 ts의 변환도 익숙하지 않은 동안 나는 고생했기 때문에 코드 실어 둡니다.
만난 파일은 다음과 같습니다.
firebase.tsimport * as firebase from 'firebase/app';
import 'firebase/auth'
const config = {
apiKey: process.env.REACT_APP_FIREBASE_APIKEY,
authDomain: "xxxxx.firebaseapp.com",
databaseURL: "https://xxxxx.firebaseio.com",
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
projectId: "xxxxx",
storageBucket: "xxxxx.appspot.com"
};
firebase.initializeApp(config)
export default firebase
App.tsximport * as React from 'react'
import './App.css'
import firebase from './firebase'
interface UserStatus {
user: firebase.User | null
}
class App extends React.Component {
public state: UserStatus = {
user: null
}
public componentDidMount() {
firebase.auth().onAuthStateChanged(user => {
this.setState({ user })
})
}
public login() {
const provider = new firebase.auth.GoogleAuthProvider()
firebase.auth().signInWithRedirect(provider)
}
public logout() {
firebase.auth().signOut()
}
public render() {
return (
<div className="App">
<p className="App-intro">
UID: {this.state.user && this.state.user.uid}
</p>
{this.state.user ? (
<button onClick={this.logout}>Google Logout</button>
) : (
<button onClick={this.login}>Google Login</button>
)}
</div>
)
}
}
export default App
state는, 본래 사용해야 할 interface에 재기입해야 했습니다만, 우선은 실행 가능한 곳까지 가려고 하고 있었으므로 용서해 주세요.
그래서 실행하면,
・로그인 전
· 로그인 후
네, 간단하게 로그인 처리를 할 수 있었습니다. firebase 측에서 로그인 상태를 가져오고 있기 때문에 componentDidMount 안에서 firebase의 메소드 부르는 것만으로 로그인 상태의 유지도 할 수 있다. 얼마나 간단해!
그렇다면 글쎄, 로그인하면 홈 화면으로 이동합니다. 그렇지 않으면 로그인 화면으로 리디렉션하는 화면 흐름을 원합니다.
다만, React와 firebase만으로 구성하고 있기 때문에, 화면이 복수가 되거나 하면, 이 구성이라고 꽤 엄격한 것이 있다. 그럼 역시 Redux 사용하는 것이 좋지 않다는 것으로, 제대로 Redux에 맞는 방법으로 구현해 가자고 하기로 했다.
. . . 솔직히 참고로 한 코드 조금 만지면 빨리라고 핥고 있었지만, 생각한 이상으로 고생했기 때문에, 다음 번 정리합니다.
일단 인증의 동작 확인까지로 이 기사는 끝.
다음 → htps : // 코 m / 테 시마 / ms / 2191 A 9751 A 4 A b16 7 7 c2
Reference
이 문제에 관하여(React+Redux+typescript+firebase로 인증 기능 만드는 것이 힘든 ①), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teshima/items/8ccf41cf7e297a6489e0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
· React와 firebase로 인증 기능 만들기//①
· React와 Redux와 firebase로 인증 기능 만들기//②
・Route로 인증할지 홈 화면으로 천이할지를 나눕니다//③
React와 firebase로 인증 기능 만들기
참고 : 10분 안에 할 수 있는 React+Firebase의 GoogleAuth
간단하고 움직일 때까지 최단을 갈 수있었습니다. 다만, 나는 typescript파이므로, 조금 만났습니다.
1로부터의 순서는 상기의 기사를 참고로 해 주세요. 위와 다른 것은 create-react-app
에 typescript 옵션을 붙인 것 정도입니다. (수수하게 js에서 ts의 변환도 익숙하지 않은 동안 나는 고생했기 때문에 코드 실어 둡니다.
만난 파일은 다음과 같습니다.
firebase.tsimport * as firebase from 'firebase/app';
import 'firebase/auth'
const config = {
apiKey: process.env.REACT_APP_FIREBASE_APIKEY,
authDomain: "xxxxx.firebaseapp.com",
databaseURL: "https://xxxxx.firebaseio.com",
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
projectId: "xxxxx",
storageBucket: "xxxxx.appspot.com"
};
firebase.initializeApp(config)
export default firebase
App.tsximport * as React from 'react'
import './App.css'
import firebase from './firebase'
interface UserStatus {
user: firebase.User | null
}
class App extends React.Component {
public state: UserStatus = {
user: null
}
public componentDidMount() {
firebase.auth().onAuthStateChanged(user => {
this.setState({ user })
})
}
public login() {
const provider = new firebase.auth.GoogleAuthProvider()
firebase.auth().signInWithRedirect(provider)
}
public logout() {
firebase.auth().signOut()
}
public render() {
return (
<div className="App">
<p className="App-intro">
UID: {this.state.user && this.state.user.uid}
</p>
{this.state.user ? (
<button onClick={this.logout}>Google Logout</button>
) : (
<button onClick={this.login}>Google Login</button>
)}
</div>
)
}
}
export default App
state는, 본래 사용해야 할 interface에 재기입해야 했습니다만, 우선은 실행 가능한 곳까지 가려고 하고 있었으므로 용서해 주세요.
그래서 실행하면,
・로그인 전
· 로그인 후
네, 간단하게 로그인 처리를 할 수 있었습니다. firebase 측에서 로그인 상태를 가져오고 있기 때문에 componentDidMount 안에서 firebase의 메소드 부르는 것만으로 로그인 상태의 유지도 할 수 있다. 얼마나 간단해!
그렇다면 글쎄, 로그인하면 홈 화면으로 이동합니다. 그렇지 않으면 로그인 화면으로 리디렉션하는 화면 흐름을 원합니다.
다만, React와 firebase만으로 구성하고 있기 때문에, 화면이 복수가 되거나 하면, 이 구성이라고 꽤 엄격한 것이 있다. 그럼 역시 Redux 사용하는 것이 좋지 않다는 것으로, 제대로 Redux에 맞는 방법으로 구현해 가자고 하기로 했다.
. . . 솔직히 참고로 한 코드 조금 만지면 빨리라고 핥고 있었지만, 생각한 이상으로 고생했기 때문에, 다음 번 정리합니다.
일단 인증의 동작 확인까지로 이 기사는 끝.
다음 → htps : // 코 m / 테 시마 / ms / 2191 A 9751 A 4 A b16 7 7 c2
Reference
이 문제에 관하여(React+Redux+typescript+firebase로 인증 기능 만드는 것이 힘든 ①), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teshima/items/8ccf41cf7e297a6489e0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import * as firebase from 'firebase/app';
import 'firebase/auth'
const config = {
apiKey: process.env.REACT_APP_FIREBASE_APIKEY,
authDomain: "xxxxx.firebaseapp.com",
databaseURL: "https://xxxxx.firebaseio.com",
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
projectId: "xxxxx",
storageBucket: "xxxxx.appspot.com"
};
firebase.initializeApp(config)
export default firebase
import * as React from 'react'
import './App.css'
import firebase from './firebase'
interface UserStatus {
user: firebase.User | null
}
class App extends React.Component {
public state: UserStatus = {
user: null
}
public componentDidMount() {
firebase.auth().onAuthStateChanged(user => {
this.setState({ user })
})
}
public login() {
const provider = new firebase.auth.GoogleAuthProvider()
firebase.auth().signInWithRedirect(provider)
}
public logout() {
firebase.auth().signOut()
}
public render() {
return (
<div className="App">
<p className="App-intro">
UID: {this.state.user && this.state.user.uid}
</p>
{this.state.user ? (
<button onClick={this.logout}>Google Logout</button>
) : (
<button onClick={this.login}>Google Login</button>
)}
</div>
)
}
}
export default App
Reference
이 문제에 관하여(React+Redux+typescript+firebase로 인증 기능 만드는 것이 힘든 ①), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teshima/items/8ccf41cf7e297a6489e0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)