구글 로그인 (OAuth)
사전 작업
-
구글 클라우드 플랫폼 콘솔에서 oauth 동의 화면
-
사용자 인증 정보에 리디렉션 url 추가
-
client Id, client_secret 환경변수로 저장
OAuth 액세스 토큰 얻기
요청 URL
https://accounts.google.com/o/oauth2/auth?client_id={client_id}&redirect_uri={redirect_uri}&scope=email profile&response_type=code
요청하면 다음과 같은 화면이 뜨게 됩니다.
인증하면 리디렉션 헤더부분 파라미터에 code 가 발급됨
발급된 Code로 access_token 발급
요청 URL
https://oauth2.googleapis.com/token
body
| code | 발급받은 코드 |
| client_id | 클라이언트 ID |
| client_secret | 클라이언트 Secret ID |
| grant_type | authorization_code |
| redirect_uri | 설정한 리다이렉트 주소 |
작성 코드
const code = req.query.code;
// code로 access_token 발급
var postVal = "grant_type=authorization_code" +
"&code=" + code +
"&client_id=" + secret_config.GOOGLE_CLIENT_ID +
"&client_secret=" + secret_config.GOOGLE_CLIENT_SECRET +
"&redirect_uri=" + secret_config.GOOGLE_REDIRECT_URL;
axios({
url: "https://oauth2.googleapis.com/token",
headers: { 'content-type': 'application/x-www-form-urlencoded' },
method: 'POST',
data: postVal
}).then(async function(response) {
const access_token = response.data.access_token;
console.log("received access_token : " + access_token);
});
Access_token 으로 유저 정보 저장
요청 URL
https://www.googleapis.com/oauth2/v3/userinfo
body
access_token | 발급받은 access_token |
---|
// access token으로 유저 정보 저장
axios({
url: 'https://www.googleapis.com/oauth2/v3/userinfo',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
method: 'POST',
data: 'access_token=' + access_token
}).then(async function(response) {
console.log("userId:" + response.data.sub);
console.log("email:" + response.data.email);
const userId = response.data.sub;
const email = response.data.email;
참고 자료
OAuth 2.0 for Mobile & Desktop Apps | Google Identity | Google Developers
node.js 로 google oauth2 테스트 하기 rest api만 이용
Author And Source
이 문제에 관하여(구글 로그인 (OAuth)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeonns2/구글-로그인-OAuth저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)