이 썰은 사실에 근거하여 작성되었으며 편향된 내용이나 잘못된 정보가 있을 수 있습니다.
평소에 깃허브 관련 활동으로 메일로 메시지가 오도록 하여 메일 서비스를 사용하지만 메일이 알람으로 오지 않아 내가 확인을 하는 데까지 오랜 시간이 걸릴 때도 많았다.
그렇다고 전체 메일을 알람을 켜놓자니 깃허브 말고 다른 프로모션 알림도 올 것 같아서 딱히 적용은 하지 않고 있었다.
그래서 디스코드 봇으로 메일을 긁어와서 깃허브관련 메일이 왔다고 알람을 일으키도록 하고 싶었다.
https://developers.worksmobile.com/kr/docs/auth-oauth
네이버 works api를 사용해서 개발하고 있었다.
디스코드 애플리케이션 생성해서 데리고 오고 연동하는 거는 여기 참조하고
애플리케이션 생성 & 데리고 오기
https://discord.com/developers/docs/quick-start/getting-started
연동
https://discordjs.guide/preparations/#initiating-a-project-folder
nest js로 사용하기 위한 코드 베이스
https://itnext.io/how-to-create-a-discord-bot-with-nestjs-e9a0dac97b23
우선 해당 네이버 api를 사용하기 위해서는 access 토큰이 필요한데, 또 access 토큰을 얻기 위해서는 먼저 계정에 대한 인증을 해서 authorization_code를 따로 받아야 한다.
https://auth.worksmobile.com/oauth2/v2.0/authorize?client_id={Client_ID}&redirect_uri={Redirect_URL}&scope={Scope}&response_type={code|id_token|token%20id_token}&state={state}&nonce={nonce}
이렇게 생성한 url을 브라우저에서 열어서 naver 로그인을 하면 redirect_uri로 설정된 링크로 연결될 거다.
그럼 이제 쿼리 스트링으로 아까 설정한 state 값과 authorization 코드가 올 것이다.
이제 authorization 코드를 활용해 엑세스 토큰을 받아 오겠다.
하다가 invalid_redirect_uri, response_type is not supported. 같은 게 떠서 예시 코드를 올리겠다.
결과적으로는 body 인코딩 문제였다.
const body = new URLSearchParams();
body.append('code', code);
body.append('client_id', process.env.NAVER_CLIENT as string);
body.append('client_secret', process.env.NAVER_SECRET as string);
body.append('grant_type', 'authorization_code');
const data = await (await fetch(`https://auth.worksmobile.com/oauth2/v2.0/token`, {
method: 'post',
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: body
})).json();
email을 scope를 넣어서 하려고 하니 standard plan이 필요하다고 하더라
그래서 결제를 하려고 하니
"만 19세 미만 미성년자는 결제수단을 등록할 수 없습니다"
아니 네이버 페이에서는 잘만 사용할 수 있게 만들었더만 이거는 왜 미성년자는 못 쓰게 하는 건가요....
내가 돈 준다고...
님 서비스 쓰겠다고요...
왜 api를 못 쓰게 하는 건데...
학생 전용 플랜을 만들 던가...
하필이면 주로 사용하던 메일이 네이버 메일이라 다른 서비스로 이동도 할 수 없고, 살다 살다 미성년자라 개발 못 하게 하는 경우는 처음 보네요...
원래 방향을 잃고 상실감이 커진 미스터 구름띠였습니다. ㅠ
이상입니다. 고객 센터에 문의를 넣어봐야 겠습니다. ㅠ
작성된 코드는 아래에 있습니다.
https://github.com/kimgh06/naver-mail-bot