파이썬으로 Firestore 에 데이터 올리기

Computer 관심/Flask|2020. 11. 9. 22:54
반응형

플러터로 어플리케이션을 제작하였고, 어플리케이션에 필요한 데이터를 제공할 수 있는 서버가 필요했다.

파이어베이스의 파이어스토어는 쉽고 다양한 언어로 SDK를 제공한다. 그래서 플라스크를 사용하여 데이터를 올리는 간단한 서버를 만들었다. (굳이 서버로 만들지 않아도 됨....)

 

 

 

1. 웹사이트에서 서비스 어카운트 키 다운 받기

1) 파이어베이스에 들어가 새로운 프로젝트를 만든다.

2) 

 

 

3) service accounts 탭에 들어가면 아래와 같은 화면을 볼 수 있고

파이썬을 클릭한다.

4) Generate new private key 다운로드

 

5) 받은 json형식의 파일을 serviceAccountKey라고 이름을 변경한다.

 

6) 파이썬이 있는 폴더에 함께 놓는다.

 

 

2. firestore 만들기

1) 좌측 클라우드 파이어스토어를 클릭하면

서버를 선택할 수 있고 한국에서 빠른 실행을 할 수 있도록 south east2 를 선택했다.

 

2)

 

3. 파이썬 코드

firebase_admin과 Flask를 설치하고 아래와 같이 코드를 만든 뒤 실행하면

firestore에 대량으로 데이터를 업데이트 가능하다.

from flask import Flask,
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import json

#서비스어카운트키 파일에 있는 json을 불러옴
cred = credentials.Certificate("./serviceAccountKey.json")
firebase_admin.initialize_app(cred)
firebase_db = firestore.client()

app = Flask(__name__)

# localhost:8000/add 로 들어갈시 작동
@app.route("/add", methods=['GET'])
def start():
	# firestore에 올릴 json 파일 불러드림
    with open('./stock_code.json', encoding='utf-8') as f:
        datas = json.load(f)
        
    # 아래는 테스트를 해보기 위한 데이터
    # datas = [{'name': '당근','code': '012345'},{'name': '오이','code': '012341'}]
    # print(datas)

    for data in datas:
    	# document() 라고 하면 자동으로 다큐먼트의 ID가 생성됨. 
        document = firebase_db.collection('콜렉션이름적기').document()
        document.set(data)
    return 'success'
    
# 공개아이피와 포트8000번 디버그 모드로 열기
if __name__ == '__main__':
    app.run(host='0.0.0.0',  port="8000", debug=True)

 

 

 

 

댓글()

플러터에서 firebase_auth와 flask 서버 같이 사용하기.

Computer 비관심/Flutter|2020. 11. 7. 00:33
반응형

이렇게 사용하면 아래와 같은 장점이 있을 것 같다.

1. 사용자 개인정보를 직접 저장하고 있지 않아도 된다.

 - 개인정보의 보안이나 관리가 어렵다. 

2. 서버에서 구현하기 귀찮은 모바일확인, 페이스북&구글로그인 등을 쉽게 구현 가능하다.

3. firestore의 단점인 과금 문제를 보완 가능. - 정말 필요한 채팅서비스에서만 firestore를 사용하면 될듯. 나머지는 flask SQL서버에 저장.

4. 파이썬을 서버로 사용하기 때문에 데이터처리에도 유용하지 않을까.....?

 

플러터에서 

1. firebaseAuth로 로그인을 함

2. firebaseAuth로 아이디 토큰을 받음

3. http post로 토큰을 서버로 보냄.

 

서버에서

1. post로 온 토큰을 firebase의 

    decoded_token = auth.verify_id_token(id_token)

    uid = decoded_token['uid'] 사용해서 유저를 확인한다.

 

 

로컬호스트에서 진행 했기 때문에 실제 서비스를 하면

어떤 문제가 생기는지는 모르겠다. 

모바일 기기에서 http post를 보낼때 localhost라고 적으면 모바일이 ip를 알지 못하니

ipconfig에 들어가서 실제 로컬호스트 아이디를 입력해줘야 한다.

 

 

댓글()