본문 바로가기

TIL✨

파이어베이스...ㅂㄷㅂㄷTIL(52)

파이어베이스 진짜 어렵다....

아무리 봐도 어렵다..... 공식문서를 들여다봐도 어렵다.....

누가 파이어베이스 딱 붙잡고 머리에 집어넣어줬으면 좋겠다...ㅎㅋㅋㅋㅋ


1. 내가만난 문제

프로젝트에서 남은 부분이 불러온 글에서 작성자의 프로필이미지를 가져오려고 했다.

근데 글을 불러오는 부분은 json으로 하고 있었고 유저의 프로필은 파이어베이스를 사용하고 있었기때문에 혼동이 왔다.

그래서 내가 생각한 루트는 json서버의 불러온 데이터안에있는 uid와 파이어베이스 user들의 uid가 일치하면 그 일치하는 user의 프로필이미지를 들고오려고 했다.

 

2.시도

위와같은 로직으로 해결을 하려면

 ㄱ. 파이어베이스의 user들의 list를 다 가져와서 돌린다.

 ㄴ.list에 있는 uid도 돌린다.

 ㄷ.uid가 일치한다면? 그 유저의 profile image를 들고온다. photoURL

 

==> 생각은 할 수 있겠는데? 했다. 근데 결국에 못했다. 이유는 간단했다.

파이어베이스가 제공하는 authService가 현재 로그인한 로그인 유저의 uid만 제공하지 남의 uid는 제공하지 않기때문이다.

그래서 firebase database를 이용해서 권한을 설정하는 SDK?를 만들고 공식문서에 정해둔 로직을 사용해서 userlist를 가져올 수 있었다. SDK가 관리자의 권한? 이런 느낌이였다. 근데 우리 조는 database를 사용하고 있지않았고 storage와 auth만 사용중이였다.

//현재 로그인한 유저의 uid값 확인 코드 ->이건 가져와졌다 ㅠ
const auths = getAuth();
   onAuthStateChanged(auths, (user) => {
     if (user) {
       console.log(user.uid);
     } else {
     }
   });
  const auths = getAuth();
  
  //여기서부터가 다른 user들의 list를 가져오는 공식문서 상의 코드였다.
    const admin =require('firebase-admin/app')
   var serviceAccount = require("./serviceAccountKey.json");

   admin.initializeApp({
     credential: admin.credential.cert(serviceAccount),
     databaseURL: "https://yourprojecturl.firebaseio.com",
   });

 admin
   .auth()
   .listUsers()
   .then((data) => {
      console.log(data.users);
     });
     
   //firebase 유저의 uid를 맵 돌릴껄 생각하고 가져왔는데 firebaseDatabase가 따로 필요했다.
  const listAllUsers = (nextPageToken) => {
    getAuth()
      .listUsers(1000, nextPageToken)
      .then((listUsersResult) => {
        listUsersResult.users.forEach((userRecord) => {
          console.log("user", userRecord.toJSON());
        });
        if (listUsersResult.pageToken) {
          // List next batch of users.
          listAllUsers(listUsersResult.pageToken);
        }
      })
      .catch((error) => {
        console.log("Error listing users:", error);
      });
  };
  listAllUsers();

 

3.해결

해결은 간단했다. 다른방법으로 우회했다ㅎ 구글에서 auth를 그렇게 갖고오는걸 안되게 해놨는데 보안을 생각하면  당연한 일인것 같기도

그래서 유저의 프로필 대신에 유저가 올린 이미지들이 리스트에 보이도록 하기로했다.

팀원분이 글을 추가할때 데이터를 잘 넣어주셔서 편하게 나타낼 수 있을것같다. 아주 감사하다..🙏🏻

 

4.얻은 점

해결은 간단하게 되었지만 팀원들한테 이 사실을 얘기하기전에 다른 방법이 없을까 엄청 찾아봤다. 혹시나 내가 모르고 얘기를 하는 거일까봐ㅠ 기억엔 거의 2시간정도를 찾아본거같은데 아무튼간에 잘 해결되었다.

필요하다면 어떻게든 하면 되겠지만 지금은 사실 복잡하고 오히려 이 시간에 다른 기능을 공부하고 추가해보는게 더 이득일꺼같다.

계속 이걸 어떻게 해야하지라는 고민이 많았는데 해결되서 속이 편하다.

다음 기능을 위해 화이팅😎

'TIL✨' 카테고리의 다른 글

Object.assign _TIL(54)  (0) 2023.01.17
TIL(53)  (0) 2023.01.12
TIL(51)  (0) 2023.01.10
네이티브 프로젝트 시작 TIL(50)  (0) 2023.01.06
Todo 돌이켜보기_TIL(49)  (1) 2023.01.05