Written by
Jiyun Wang
on
on
FCM 시작하기 [1]
참고!! 이 글의 모든 가이드를 따를 필요는 없습니다. 제가 스터디한 내용을 주먹구구로 작성한 내용입니다.
정확한 가이드는 firebase 공식 문서 페이지를 확인하세요!
1 step > 서버에 Firebase Admin SDK 추가 및 초기화
목표 : Firebase를 사용할 수 있도록 구성한다.
FCM을 사용하기 위한 준비 단계
- 앱에 Firebase 추가
- 이유 : Firebase Admin SDK를 사용하려면 Firebase 프로젝트, Firebase 서비스와 통신할 서비스 계정 및 서비스 계정의 사용자 인증 정보를 포함하는 구성 파일이 필요하기 때문이다.
1.Firebase 프로젝트가 없으면 Firebase 콘솔에서 추가합니다. 프로젝트 추가 대화상자로도 기존 Google Cloud Platform 프로젝트에 Firebase를 추가할 수 있습니다.
2. 프로젝트의 설정 페이지에서 서비스 계정 탭으로 이동합니다.
3. 서비스 계정 탭의 Firebase Admin SDK 섹션 하단에 있는 새 비공개 키 생성 버튼을 클릭합니다.
* 버튼을 클릭하면 서비스 계정의 사용자 인증 정보를 포함하는 JSON 파일이 다운로드됩니다. 다음 단계에서 이 파일이 있어야 SDK를 초기화할 수 있습니다.
- 서버에 Firebase Admin SDK 추가
- Admin 자바 SDK를 사용하는 경우 자바 7 이상을 실행하는 서버 (본인은 8을 사용함)
- JAVA SDK 선택 (그 밖에 node.js, python, go 지원)
Firebase Admin 자바 SDK는 Maven 중앙 저장소에 게시되어 있습니다. 라이브러리를 설치하려면 build.gradle 파일에 종속 항목으로 선언합니다.
dependencies {
implementation 'com.google.firebase:firebase-admin:6.2.0'
}
Maven을 사용하여 애플리케이션을 빌드하는 경우 pom.xml에 다음과 같은 종속 항목을 추가할 수 있습니다.
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>6.2.0</version>
</dependency>
- SDK 초기화
- 1) 서비스 계정 사용자 인증 정보가 포함된 JSON 파일로 초기화하는 방법 (본인이 사용한 방법)
public static void FCMInit() { try { FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json"); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(GoogleCredentials.fromStream(serviceAccount)) .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/") .build(); FirebaseApp.initializeApp(options); System.out.println("FCM INIT SUCCESS!"); } catch (Exception e) { System.out.println(e.getMessage()); } } - Admin SDK를 사용하면 관리자 권한 환경에서 Firebase와 상호 작용하여 다음과 같은 작업을 수행할 수 있다.
- 전체 관리자 권한으로 실시간 데이터베이스 데이터를 읽고 쓴다.
- FCM 서버 프로토콜에 대한 간단한 대안적인 접근법을 사용하여 프로그래밍 방식으로 Firebase 클라우드 메시징 메시지를 전송한다.
- Firebase 인증 토큰을 생성하고 검증한다.
- Cloud Storage 버킷과 같은 Google Cloud Platform 리소스 및 Firebase 프로젝트에 연결된 Firestore 데이터베이스에 액세스한다.
- 간소화된 관리자 콘솔을 직접 만들어 인증을 위해 사용자 데이터 조회, 사용자의 이메일 주소 변경과 같은 작업을 수행한다.
- Firebase 콘솔 프로젝트를 만들고 서비스 계정 사용자 인증 정보가 포함된 JSON 파일을 다운로드했으면 다음 코드로 SDK를 초기화할 수 있다.
- 전체 관리자 권한으로 실시간 데이터베이스 데이터를 읽고 쓴다.
- 1) 서비스 계정 사용자 인증 정보가 포함된 JSON 파일로 초기화하는 방법 (본인이 사용한 방법)
- 2) Google OAuth2 새로고침 토큰으로 인증할 수 있는 인증 정보를 이용하여 초기화하는 방법
- 이유 : google api를 https oauth2 방식으로 호출하기 위해 사용한다. 이는 Header Authoriazation에 ‘Bearer
' 으로 붙여줘야하기 때문이다. - 다른 인증 정보 유형을 사용하여 Admin SDK를 인증할 수도 있다. 예를 들어 Google Cloud Platform 내에서 코드를 실행하는 경우Google 애플리케이션 기본 사용자 인증 정보를 사용하면 Admin SDK에서 서비스 계정을 가져온다.
- 이유 : google api를 https oauth2 방식으로 호출하기 위해 사용한다. 이는 Header Authoriazation에 ‘Bearer
FileInputStream refreshToken = new FileInputStream("path/to/refreshToken.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(refreshToken))
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
주의 : Admin SDK의 특정 토큰 발급 및 검증 기능은 인증서 사용자 인증 정보로 인증된 경우에만 사용할 수 있다. 그러나 인증, 실시간 데이터베이스 및 FCM API에는 인증 정보에 관계없이 액세스할 수 있다.
- 3) 매개변수 없이 초기화하는 방법
FirebaseApp.initializeApp();
여러 앱 초기화 방법은 사이트를 참고할 것 . 이 과정을 따르면 준비 완료!! :)