티스토리 뷰
Node.js에는 고맙게도 OAuth 처리를 해주는 모듈들이 존재하는데 대표적으로 사용하는 것 중에 하나인 passport-facebook을 테스트 해보다 생긴 이슈들을 정리해본다.
1. facebook 개발자 사이트에 앱을 추가할 때 콜백 URL을 명시해야 한다.
처음에 호스트 주소만 입력했더니 콜백 값을 못 받아와서 무슨 문제인지 한참 찾아보았는데 요청을 보낸 후 정보를 받아올 라우터 주소까지 입력을 해야 한다.
2. facebook에서 가져오는 정보를 설정하는 법
passport-facebook을 사용하기 위해 처음 참조한 책에 따르면 아무런 설정 없이 emails, username, providerId 등을 참조하는데 현재 사용하는 모듈에서는 적용되지 않는 것으로 나타났다.
검색 결과 profileField를 FacebookStrategy를 생성할 때 적용하면 된다고 나와 있어서 해보았다.
passport.use(new FacebookStrategy({
clientID: 클라이언트 ID,
clientSecret: 앱 시크릿 코드,
callbackURL: 콜백 URL,
passReqToCallback: true,
profileFields: ['id','emails','username'] //이 필드는 적용이 되지 않는 것 같다.
},
하지만 이 프로파일이 제대로 적용되지 않았고 username은 facebook OAuth가 v2.0이 넘어가면서 deprecated되었나는 에러 메시지가 나왔다.
다음으로 찾아본 정보에 의하면 라우팅에서 passport.authenticate을 할 때 scope 설정값을 넣는 방법이었는데
passport 공식 사이트의 레퍼런스에 나온 정보여서 확실히 믿을만 했다.
다음과 같이 scope 설정을 하니 원하는 정보가 제대로 들어왔다.
페이스북에서 제공 받을 수 있는 정보는 페이스북 개발자 페이지에서 찾을 수 있었는데 현재 지원하는 권한은 다음과 같다.
그 중 기본 권한인 public_profile은 다음과 같은 정보를 제공하는데
scope: ['public_profile', 'email'] 로 설정을해서
받은 profile 객체를 콘솔에 찍어보면
{ id: '아이디',
username: undefined,
displayName: undefined,
name:
{ familyName: '성',
givenName: '이름',
middleName: undefined },
gender: undefined,
profileUrl: undefined,
emails: [ { value: '이메일' } ],
provider: 'facebook',
_raw: '{"id":"아이디","email":"이메일","last_name":"성","first_name":"이름"}',
_json:
{ id: '아이디',
email: '이메일',
last_name: '성',
first_name: '이름',
accessToken: '액세스 토큰',
refreshToken: undefined } }
이런 구조로 기본 권한으로 주는 정보와 emails 필드로 이메일 정보가 value 필드안에 들어 있는 것을 볼 수 있다.
'거인의 어깨위에 서려는 > 서버 개발자를 위한' 카테고리의 다른 글
호스팅 서버에 ssh 로 git 연동하기 (0) | 2020.11.16 |
---|---|
[Firebase Functions] 서버리스를 이용한 간단한 Node.js 서버 배포 방법 (0) | 2020.03.08 |
[Let's Encrypt] HTTPS 인증서 무료로 발급받기 (2) | 2017.10.15 |
[Node.js] passport.js의 모든 것 (0) | 2016.06.05 |
[Node.js] 사용자정의 Event 사용 방법 예제 (0) | 2016.05.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- egghead
- MVP
- 공존이 필요해요
- iterms
- 아키텍처
- React Native
- release build issue
- 구독료 계산기
- patch-packages
- 안드로이드
- git ssh 연동
- 좋은 습관이란
- git 실수
- 스크럼
- 소름돋는필력
- 그리고 상상력
- 소프트웨어 공학
- multiDex issue
- 이미지 여백주기
- 애드 캣멀
- 최은영작가님
- 이미지 일괄 변경
- gradle
- go
- node.js
- 창의성을 지휘하라
- Android
- retrofit
- 쉽게 말하는법
- 시간 관리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함