250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바스크립트
- bcrypt
- manytomanyfield
- wecode
- 실행 컨텍스트
- 노드
- javascript
- CORS
- Django
- 프로미스
- typescript
- nodeJS
- pm2
- docker
- Jest
- async/await
- 호이스팅
- status code
- on_delete
- westagram
- crud2
- 트랜잭션
- OSI7계층
- rebase
- JWT
- django westagram
- 스코프
- TypeError: this.boardRepository.createBoard is not a function
- node
- 장고초기세팅
Archives
- Today
- Total
될때까지
((WnB)) 4일차 : Kakao Social API 본문
728x90
import requests
import json
from django.shortcuts import redirect # 새 창으로 이동
from django.http import JsonResponse
from django.views import View
from users.models import User
class KakaoSignUpView(View):
def get(self, request):
token = request.META.get('HTTP_AUTHORIZATION') # 프론트앤드가 보내준 요청의 헤더에 있는 AUTHORIZATION 값을 뽑는다.
url = 'https://kapi.kakao.com/v2/user/me' # 요청보내야하는 url (카카오 공식문서에 있음)
header = {"Authorization" : f'Bearer ${token}'} # header에 담아야하는 데이터
response = requests.get(url, headers=header) # requests를 사용하면 요청을 보낸다. 카카오 서버로 헤더에 토큰을 담아서 '요청'을 보낸다
response = response.json() # 받아온 응답을 json으로 변경하면
kakao_id = response['id']
email = response['kakao_account']['email']
kakao_profile_img = response['kakao_account']['profile_image_url'] # 뽑을 수 있는 데이터만 추출
if User.objects.get(kakao_id=kakao_id).exist():
# 유저가 이미 존재한다면
return redirect('메인화면 url') # 메인 화면으로 이동
# 존재하지 않을 때 여기로 온다
# 프론트단에서 사용자가 이름/성/생일을 입력해야하니까 새창으로 이동시키는데
# 저장한 kakao_id, email, kakao_profile_img를 담아서 이동시켜야한다.
# 그리고 사용자가 입력하면 그 때 유저를 생성한다.
# 데이터를 담아서 어떻게 보내지 안간다..
return redirect('/users/test', kakao_id=kakao_id)
# 최초가입자 카카오 로그인 => 우리회원 최초 로그인이네? db에 없어
# 판단 후
# 회원정보를 입력하는 창으로 이동하고.
# 저장 => create
# null, default로 가입하고
# 개인정보 페이지가 필요하네
# 마이페이지에서 수정하도록
return JsonResponse({'user_info' : 'test'})
class Test(View):
def post(self, request):
# 프론트가 보내준 값 추출해서(쿼리파라미터? data에 담아서?)
# first_name, last_name, phone_number, birth_day 저장하기
User.objects.create(
first_name = first_name,
last_name = last_name,
email = email,
kakao_id = kakao_id,
kakao_profile_img = kakao_profile_img,
phone_number = phone_number,
birth_day = birth_day
)
return JsonResponse({'result':'제발되라'})
소셜로그인 카카오 API를 사용하기로 했다. 카카오 공식문서를 확인했을 때, 사용자의 이름/연락처/생년월일/이메일 등 다 가져올 수 있다고 분명히 봤었는데 오늘 다시보니까 가져올 수가 없다... ㅜㅜ!!!
null=True를 주면 되지만 아깝다... 입력값을 새 창으로 이동시켜서 거기서 값을 입력받으면 되지 않을까 싶다. 검색해보니 다른 창으로 이동은 redirect를 사용하면 된다. 하지만 User객체를 생성하기 위해 필요한 일부 데이터(카카오아이디, 카카오프로필 이미지)를 같이 넘겨줘야하고, 넘어간 사이트에서 프론트엔드로 요청을 보내서 응답을 받은 뒤에 응답에서 필요 데이터(이름, 연락처, 생년월일)를 뽑아서 유저객체를 만들어야한다. 근데 이게 가능한가...???/
728x90
'프로젝트 > wecode2차 : WnB' 카테고리의 다른 글
((WnB)) 6일차 : 로그인 데코레이터 포스트맨으로 테스트하기 (0) | 2022.08.06 |
---|---|
((WnB)) 5일차 : Kakao Social API 포스트맨 테스트 (0) | 2022.08.05 |
((WnB)) 3일차 : 모델링 수정 및 CSV 작업 (0) | 2022.08.04 |
((WnB)) 2일차 : 모델링 작업 도중 만난 몰랐던 개념들 (0) | 2022.08.03 |
((WnB)) 1일차 : 프로젝트 팀명 정하기, 파트 나누기, 초기 세팅, ERD (0) | 2022.08.01 |