OAuth 원리

  • 나의 서비스가 사용자를 대신하여 그들의 서비스에 접속하여 행동
  • 보안 문제 - 인증필요
  • ID,PW 방식
    • 심플하지만 매우 위험
  • 임시 비밀번호 발급
    • 복잡한 비밀번호 생성 가능 
    • 일부 권한만 허용한 비밀번호 생성 가능
    • 기간제로 사용 가능, 기간 완료 시 자동 삭제
  • OAuth
    • Access Token
    • 나의 서비스를 그들의 서비스에 등록하는 절차 필 Register

  • Register를 위한 Client / Resource Server의 정보 교환 목록
    • client id ( 중복 X )
    • client secret ( 노출 X )
    • redirect url ( access token 을 배달할 배송지 )
    • auth code
    • access token

OAuth방식으로 페이스북으로 로그인기능 구현 (SDK X)

페이스북 개발자 페이지로 이동

https://developers.facebook.com/

 

Facebook for Developers

Show Slide 1Show Slide 2Show Slide 3Show Slide 4Show Slide 5Show Slide 6 파트너 준비 사항: Facebook 광고에 영향을 미치는 Apple iOS 요구 사항에 대해 자세히 알아보세요. FACEBOOK으로 빌드하기 Facebook의 추천 플랫폼

developers.facebook.com


상단 탭 중 내 앱 클릭


새 앱 추가

보안 이슈로 인해 https 강제


Redirect url 지정


Node.js 설치 및 소스코드 조회


npm을 이용하여 local-web-server 설치

 


fb-low.html 파일 생성

 

로그인 플로 직접 빌드 - Facebook 로그인 - 문서 - Facebook for Developers

사용자 로그인 유도 사용자가 앱에 로그인하지 않았거나 Facebook에 로그인하지 않은 경우 로그인 대화 상자를 사용하여 앱과 Facebook에 모두 로그인하도록 메시지를 표시할 수 있습니다. Facebook에

developers.facebook.com


프로젝트 실행 및 OAuth 확인


Resource Owner의 웹페이지로 리다이렉트된 token 확인

  • state
    • 기본적으로 client가 요청한 state 값과, resource owner가 넘겨준 state 값은 같다.
    • 두 값이 다르면 보안 이슈 의심
  • expires_in
    • access token의 수명
https://localhost:8000/fb-low.html?
#access_token=EAAIAP9sZCr1kBAF8R2V
&data_access_expiration_time=1643078363
&expires_in=4837
&long_lived_token=EAAIAP9sZCr1kBAB
&state=1234

Access Token 을 이용하여 페이스북 API에 접속하여 현재 사용자의 이름 조회하기

<!doctype html>
<html>
    <body>
    <div id="welcome"></div>
        <a href="https://www.facebook.com/v12.0/dialog/oauth?client_id=######&redirect_uri=https%3A%2F%2Flocalhost%3A8000%2Ffb-low.html&state=1234&response_type=token">
            Login With Facebook
        </a>

        <script>
            var atr = location.href.match('access_token=([^&]*)');
            console.log('access token regular expression : ', atr);
            if (atr) {
                // access token 값을 획득했다.
                var access_token = atr[1];
                console.log('access token : ', access_token);
                fetch(
                    "https://graph.facebook.com/v12.0/me/?access_token="+access_token
                )
                    .then(function (raw) {
                        return raw.json();
                    })
                    .then(function (result) {
                        if (result.error) {

                        } else {
                            document.querySelector('#welcome').innerHTML = "Welcome, " + result.name;
                        }

                    })
            }
        </script>
    </body>
</html>


OAuth방식으로 페이스북으로 로그인기능 구현 (SDK O)

https://developers.facebook.com/docs/javascript/quickstart/?translation

 

빠른 시작 - 웹 SDK - 문서 - Facebook for Developers

기본 설정 JavaScript용 Facebook SDK에는 다운로드하거나 설치해야 하는 독립실행형 파일이 없습니다. 대신 SDK를 페이지에 비동기식으로 읽어들일 HTML에 간단한 JavaScript 정규식을 포함하기만 하면 됩

developers.facebook.com


fb-sdk.html 파일 생성

SDK (Software Developement Kit)

  • Resource Sever의 API를 효율적으로 제어하기 위해 제공되는 도구

 

1. SDK 활성화 

 

2. 페이스북 로그인 상태값 확인

https://developers.facebook.com/docs/facebook-login/web

 

웹 - Facebook 로그인 - 문서 - Facebook for Developers

전체 코드 예시 이 코드는 HTML 페이지에 JavaScript SDK를 읽어들여 초기화합니다. {app-id}를 앱 ID로 바꾸고, {api-version}을 사용할 그래프 API 버전으로 바꿉니다. 이전 버전을 사용해야 할 특별한 이유

developers.facebook.com

 

3. 화면 구성

'Back-end > OAuth' 카테고리의 다른 글

OAuth방식으로 구글 로그인기능 구현  (0) 2021.10.27

+ Recent posts