일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 서버사이드렌더링
- 비동기
- 플젝후체크
- 필사
- Machine Learning
- Kakao
- 파이썬
- address
- github
- #스파르타코딩클럽후기 #내일배움캠프후기
- Anaconda
- PID
- 자바파이썬
- 출처: 자바의 신 8장
- expression statement is not assignment or call html
- 코딩온라인
- 파이콘
- github markdown
- Morphological analysis #Corpus
- gitbash
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트v
- taskkill
- 마크다운
- 클라이언트사이드렌더링
- khaiii
- Technical Writing
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트
- 모바일웹스킨
- terminate
- SSR
- Today
- Total
개발 일기
FirebaseOAuth Google Login 구현하기 본문
1. 프로젝트 셋업
Google -> 사용설정 -> 프로젝트 이름/ 지원 이메일을 설정하고 저장하기.
Build.gradle 에 추가해주자
implementationgroup:'com.google.firebase',name:'firebase-admin',version:'8.0.1'
implementation'org.springframework.boot:spring-boot-starter-security'
시스템 -> 고급 시스템 설정 -> 시스템 속성
환경변수 -> 새로 만들기
Google credentials 키 값과 함께, 변수 값은 파일 찾아보기로 직접 넣어줘도 된다
2. FireBase 초기화, 인증 토큰 검증
FirebaseInitializer 라는 Configuration 만들고, FirebaseAuth(인증 관련 모듈)을 초기화해보자.
특정 FirebaeAPP 전용 FirebaseAuth 인스턴스를 가져오는 단계이다.
@Configuration
public class FirebaseConfig {
@Bean
public void firebaseAuth() throws IOException {
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.build();
FirebaseApp.initializeApp(options);
// return FirebaseAuth.getInstance(FirebaseApp.getInstance());
}
}
*에러
getInstance 에서 getFirebaseApp() 이 불러지지 않고 cannot resolve method getFirebaseApp이라고 뜬다.
1차 시도방법
(1) 환경변수는 시스템 환경변수 편집에서 직접 파일 찾아보기로 넣어주었고
혹시 몰라서 윈도우 쉘에도 위의 명령어로 (위치와 파일명 포함해서) 도 해보았는데 똑같다. .
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
(2) build.gradle도 추가 후에 dependency run 해주었는데 파일을 못읽어오는 듯하다.
2차 시도
ClassPathResource를 써보자.
@Bean
public FirebaseAuth firebaseAuth() throws IOException {
ClassPathResource key = new ClassPathResource("src/main/resources/codingyo-firebase-adminsdk.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(key.getInputStream()))
.build();
FirebaseApp.initializeApp(options);
return FirebaseAuth.getInstance(FirebaseApp.getInstance());
}
}
아래 블로그를 참고해서, 주소를 없애보았다. 생각해보니 ClassPathResource 이니 주소 전체를 붙여주는 InputStream 과 달리 파일 명만 넣어줘도 될 것 같았다.
@Bean
public FirebaseAuth firebaseAuth() throws IOException {
ClassPathResource key = new ClassPathResource("codingyo-firebase-adminsdk.json");
FirebaseOptions options = FirebaseOptions.builder()
// FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(key.getInputStream()))
.build();
FirebaseApp.initializeApp(options);
return FirebaseAuth.getInstance(FirebaseApp.getInstance());
}
이제 잘 받아와진다 :)