(web) 스프링2020. 11. 12. 15:37
728x90

※ spring - gradle 프로젝트

 

 

* 우선 파이어베이스에서 console을 하나 만듭니다.

 

* gradle 프로젝트이므로

build.gradle에 파이어베이스의 dependencies를 추가해 줍니다.  (버전확인 <-링크 클릭해서 확인하세요)

implementation 'com.google.firebase:firebase-admin:6.8.1'

 

build.gradle에 firebase dependency 추가한 모습

 

 

* Firebase Admin SDK 추가

콘솔에서 원하는 프로젝트 - 설정 -프로젝트 설정 - 서비스 계정 - 자바 - 새 비공개 키 생성

 

키 생성 클릭하면 json 파일 하나가 다운로드 됩니다.

다운받은 .json파일

 

다운받은 파일을 드래그&드랍으로 프로젝트의 resources 디렉토리 안에 넣어줍니다.

 

* 스프링 프로젝트의 application.properties에 다음의 문장을 입력합니다

firebase-realtime-database.database-url=파이어베이스 주소

 

파이어베이스 주소는 빨간색 밑줄로 표시되어 있는 것 입니다.

그리고 좌측의 버튼으로 복사가 가능합니다.

파이어베이스 주소

 

붙여넣은 모습

 

 


spring과 파이어베이스 realtime 데이터베이스를 연결하려고 했습니다.

결국 성공하지 못해서 코드를 남깁니다..ㅠ

 

 

Service/FirebaseInitialize.java

package DSC4.cafein.service;

import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.io.FileInputStream;

@Service
public class FirebaseInitialize {

    @PostConstruct //has to be Run during the Start of
    public void initialize() {
        try {
            FileInputStream serviceAccount =
                    new FileInputStream("./src/main/resources/serviceAccountKey.json");

            FirebaseOptions options = new FirebaseOptions.Builder()
                    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                    .setDatabaseUrl("https://cafein-d8792.firebaseio.com")
                    .build();

            FirebaseApp.initializeApp(options);
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

 

 

Service/FirebaseService.java

package DSC4.cafein.service;

import DSC4.cafein.domain.Member;
import com.google.firebase.database.*;
import org.springframework.stereotype.Service;


@Service
public class FirebaseService {
    private FirebaseDatabase database;
    private DatabaseReference databaseReference;

    public String getUserDetails(Member member) {
        database = FirebaseDatabase.getInstance();
        databaseReference = database.getReference("member").child("spring1");


        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
            //    Iterable<DataSnapshot> values = dataSnapshot.getValue(Member.class);
                Member member;
                member. = dataSnapshot.child("name").getValue();
             //   member = values.toString(Member.class);
              //  return member;
            }

            @Override
            public void onCancelled(DatabaseError error) {

            }
        });
//        ApiFuture<DataSnapshot> future = databaseReference.get();
//
//        DataSnapshot snapshot = future.get();
//        Member member = null;
//
//        if(snapshot.exists()){
//            member = snapshot.toObject(Member.class);
//            return member;
//        }
//        else{
//            return null;
//        }


//        mFirebaseDataBaseReference = FirebaseDatabase.getInstance().getReference();
//        mFirebaseDataBaseReference.child("user").child("ID").setValue("test",);

    }
}

 

 

반응형
Posted by mminky