1. 사용자는 웹애플리케이션(이하 앱)에서 구글을 통한 회원가입/로그인 시도를 한다. 앱에서 제공하는 `구글로 로그인하기`를 누른게 된다.
2. 앱에서는 Google Cloud Platform(이하 GCP)에서 미리 설정해놓은 client_id, redirect_uri 와 함께 로그인 페이지로 리다이렉트한다.
https://accounts.google.com/o/oauth2/v2/auth
?client_id=GCP에서 설정한 client_id
&redirect_uri=GCP에서 설정한 redirect_uri
&response_type=code
&scope=GCP에서 설정한 스코프 범위
&approval_prompt=force
&access_type=offline
3. 사용자가 정상적으로 로그인을 완료하면 code 값과 함께 2번에서 설정했던 redirect_uri로 리다이렉트 한다.
4. 가지고 있는 client_id, client_secret, code와 함께 토큰발급을 요청한다.
주소 | POST/ https://oauth2.googleapis.com/token |
client_id | GCP에서 발급받은 client_id |
client_secret | GCP에서 발급받은 client_secret |
code | 3번에서 받은 code |
grant_type | authorization_code 고정 |
redirect_uri | GCP에서 설정한 redirect_uri |
5. 정상적으로 처리됐다면 토큰과 관련정보들을 응답한다.
access_token | 앞으로 사용해야 할 액세스 토큰값 |
expires_in | 액세스 토큰의 만료기한 초 |
refresh_token | 새 액세스 토큰을 얻을 수 있는 토큰값 |
scope | 데이터에 접근할 수 있는 스코프(범위) |
token_type | Bearer 고정 |
유저정보에 액세스가 가능한 토큰을 가지고 있는 앱은 사용자의 정보를 읽기위해 구글API서버에 토큰과 함께 호출을 한다.
6. 토큰을 발급받았다면 사용자가 허락한 스코프(범위) 내에서 정보를 가져올 수 있다. 이 글에서는 간단하게 사용자 정보를 출력하는 Google API에 정보를 요청해보겠다.
주소 | GET/ https://www.googleapis.com/oauth2/v2/userinfo |
access_token | 발급받은 액세스 토큰 |
7. 액세스 토큰과 스코프 문제가 없다면 정상적인 값이 출력된다.
세부적인 정보, 값은 천천히 수정할 예정이다.
'토막상식' 카테고리의 다른 글
업캐스팅 시 동적 바인딩 과정 (0) | 2022.10.04 |
---|---|
많은 사람들이 모르는 Putty 포트포워딩 꿀팁 (0) | 2022.09.04 |
[Azure] Webapps 에 도메인넣고 SSL 설정하기 (0) | 2022.09.03 |
페이지네이션(Pagination) 간단정리 (0) | 2022.06.18 |
C++ 접두어 (0) | 2019.08.04 |