FirebaseUI로 일본어화 한 후 AuthDomain을 설정하고 싶습니다.
16979 단어 FirebaseFirebaseAuth
FirebaseUI에서 웹 앱에 쉽게 로그인 기능 추가
위의 링크를 보시면 알 수 있듯이 FirebaseUI에서는 아래 그림과 같이 단순히 컨테이너를 만들면 마음대로 로그인 화면을 만들어 줍니다.
결국 여기까지 도착하기까지 여러가지 망설였기 때문에 비망록적인 것입니다.
안 1
첫째, Google 가이드에는 몇 가지 방법이 있습니다.
ESM (ES Modules)에서 Webpack을 사용하여 1 파일로 그룹화했으므로 가이드대로
npm install firebaseui --save
를 실행하여 프로젝트에 통합했습니다.이 때 사용한 코드는 도중에 생략하지만 다음과 같습니다.
login.html
<!DOCTYPE html>
<html lang="ja">
<head>
<script src="./bundle.js"></script>
<link
type="text/css"
rel="stylesheet"
href="https://www.gstatic.com/firebasejs/ui/4.6.1/firebase-ui-auth.css"
/>
</head>
<body>
<div id="firebaseui-auth-container"></div>
</body>
</html>
login.ts
//----- ログイン処理 -----//
import * as firebaseui from 'firebaseui'
import { firebaseConfig } from './firebaseConfig'
import firebase from 'firebase/app'
import 'firebase/auth'
// Firebaseを初期化
firebase.initializeApp(firebaseConfig)
const auth = firebase.auth()
auth.languageCode = 'ja'
if (location.pathname === '/login') {
const ui = new firebaseui.auth.AuthUI(firebase.auth())
ui.start('#firebaseui-auth-container', {
signInOptions: [
firebase.auth.EmailAuthProvider.PROVIDER_ID,
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
firebase.auth.TwitterAuthProvider.PROVIDER_ID,
],
callbacks: {
signInSuccessWithAuthResult: () => {
return true
},
},
signInSuccessUrl: '/',
privacyPolicyUrl: '/policy',
})
}
이것을 열어 보면 다음과 같은 표시가 되었습니다.
일본어가 아니다 ....
안 2
"그래도 역시 유저를 생각하면 일본어가 좋구나..."라는 것으로 또 다른 방법 "CDN 사용"을 시도하기 위해 방금 전의 TypeScript 파일을 지워 HTML 파일을 변경.
<head>
태그가 끝나기 전에 이것을 추가했습니다.login.html
<script src="/__/firebase/7.23.0/firebase-app.js"></script>
<script src="/__/firebase/7.23.0/firebase-analytics.js"></script>
<script src="/__/firebase/7.23.0/firebase-auth.js"></script>
<script src="/__/firebase/init.js"></script>
<script src="https://www.gstatic.com/firebasejs/ui/4.7.1/firebase-ui-auth__ja.js"></script>
<script>
const ui = new firebaseui.auth.AuthUI(firebase.auth())
ui.start('#firebaseui-auth-container', {
signInOptions: [
firebase.auth.EmailAuthProvider.PROVIDER_ID,
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
firebase.auth.TwitterAuthProvider.PROVIDER_ID,
],
callbacks: {
signInSuccessWithAuthResult: () => {
return true
},
},
signInSuccessUrl: '/',
privacyPolicyUrl: '/policy',
})
</script>
일본어가 되었습니다!
그러나 여기서도 문제가.
예를 들어 지금
hogehoge.com
에 있더라도 로그인 버튼을 누르면 <project-id>.firebaseapp.com
로 건너뛰고 나서 OAuth 화면으로 날아갑니다.즉, OAuth의 흐름으로서는 「
hogehoge.com
→ <project-id>.firebaseapp.com
→ (OAuth 인증) → <project-id>.firebaseapp.com
→ hogehoge.com
」라고 수수께끼(?)의 firebaseapp.com
이것에 대해서는, Firebase 의 설정의
authDomain
라고 하는 Key 로 설정할 수 있습니다만 , 원래 CDN 에서는 설정 파일을 임베드할 수 없다.해결책
문서를 살펴보면 FirebaseUI 소스 코드에서 직접 빌드하면 해결할 수 있습니까? 라고 생각해, 시험해 보았습니다. 결과 성공했습니다.
GitHub: firebase/firebaseui-web
참고 : firebaseui-web/README.md at master · firebase/firebaseui-web
Step1
먼저 빌드에 필요한 개발 환경을 설치합니다.
Step2
소스 코드를 Clone 합니다.
git clone https://github.com/firebase/firebaseui-web.git
cd firebaseui-web
npm install
Step3
ESM용 일본어 버전 파일을 빌드합니다.
npm run build build-esm-ja
dist
폴더에 있는 esm__ja.js
가 출력된 파일입니다.Step4
로드합니다. TypeScript를 사용하고 있기 때문에
index.d.ts
도 복사했습니다.login.ts
import './firebaseui/@types/index'
import { auth } from './firebaseui/esm__ja'
// ~ Firebaseの設定は略 ~ //
window.addEventListener('DOMContentLoaded', () => {
if (location.pathname === '/login') {
const ui = new auth.AuthUI(firebase.auth())
ui.start('#firebaseui-auth-container', {
signInOptions: [
firebase.auth.EmailAuthProvider.PROVIDER_ID,
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
firebase.auth.TwitterAuthProvider.PROVIDER_ID,
],
callbacks: {
signInSuccessWithAuthResult: () => {
return true
},
signInFailure: (err) => {
console.error(err)
},
uiShown: () => {},
},
signInSuccessUrl: '/',
privacyPolicyUrl: '/policy',
})
}
})
Step5
Step4 그대로, 아직
<projectid>.firebaseapp.com
로 날아갑니다.그런 다음 Firebase 구성 파일을 변경합니다.
firebaseConfig.ts
{
apiKey: '...',
// authDomain: '<projectid>.firebaseapp.com',
authDomain: 'hogehoge.com',
databaseURL: '...',
// 以下略
}
이제 Webpack으로 빌드하면 제대로 일본어가 되어
hogehoge.com
로 날아갔습니다!
Reference
이 문제에 관하여(FirebaseUI로 일본어화 한 후 AuthDomain을 설정하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/a01sa01to/items/5c8324e0f37bdf0eacd7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)