LINE Messaging API 에러 노트 (line-bot-sdk-java)
LINE Engineer Blog의 LINE Messaging API 사용해보기의 내용을 따라하며 LINE Bot API를 사용해보는 도중 여러 번에 걸쳐 에러가 나타났다. 계속 머리를 감싸고 헤매다 결국 에러를 해결했는데, 결론적으로 대부분의 에러는 해당 글을 대강 읽었던 게 문제였다.
이번에는 어떤 에러가 나타났는지, 그리고 어떻게 해결했는지 정리하고자 한다. 안 그래도 빌드 속도도 4-5분대로 많이 느려서 많이 답답하고 애타는데, LINE Bot을 이용하는 개발자들이 이 글을 참고하고 비슷한 수고를 덜할 수 있었으면 좋겠다.
개발 환경은 구름IDE를 사용하였으며 게시물에 나와있는 Heroku 서버 역시 동일하게 사용하였다.
로그 보는 방법
기본적으로 Heroku Dyno에 현재 실행되고 있는 Line Bot의 로그를 보려면 다음 명령어를 입력하면 된다. (해당 게시물에도 있지만 편의를 위해 여기에도 기록해 둔다.)
heroku logs --tail --app <Heroku App Name>
Invaild Token 에러
로그 창에 다음과 같은 에러가 나타난다면 application.yml 파일 설정이 잘못되어있을 가능성이 높다. 로그에 같은 내용의 에러 메시지가 반복되므로 한 번씩만 간추렸다.
참고로 이 경우는 webhook verify를 하였을때 분명 success라고 나타나는데, 실제로 LINE 앱으로 Bot 계정에 메시지를 보냈을 때 동작을 안 한다.
: <-- 401 Unauthorized https://api.line.me/v2/bot/message/reply (345ms)
: {"message":"Authentication failed due to the following reason: invalid tok
en. Confirm that the access token in the authorization header is valid."}
: WWW-Authenticate: Bearer error="invalid_token", error_description="invalid
token"
1. Token 문제 (Invaild Token 에러)
본인 같은 경우에는 LINE Official Account Manager 페이지의 Messanger API에 있는 Channel ID와 Token을 혼동하여 생긴 문제였다. 위와 같이 Channel ID와 Channel Secret이 같이 있어, Token과 혼동하였다.
token 값이 이렇게 짧을 리가 없었다. 이 문제를 모르고 장시간 씨름하다 token을 issue 하여 값을 channel-token 잘에 적용하여 해결하였다.
2.’application-template.yml’ 파일을 ‘application.yml’로 복사하는 과정 (Invaild Token 에러)
나중에 확인해보니 블로그에도 분명 적혀 있었는데 빠르게 내용을 보느라 인지하지 못하고 과정을 거치지 않고 그대로 빌드하였다. 이렇게 하니 로그에 에러가 발생하였다.
application.yml 파일로 복제해주자.
주석 처리 에러
로그 창에 다음과 같은 에러가 나타났다면 application.yml에 주석 처리를 안해줬을 가능성이 높다.
app[web.1]: Caused by: org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed here
app[web.1]: in 'reader', line 19, column 9:
app[web.1]: line.bot:
app[web.1]: ^
이 부분도 #
를 사용하여 주석 처리를 해 주어야 한다.
‘application-template.yml’ 파일을 ‘application.yml’로 복사하는 과정
나중에 확인해보니 블로그에도 분명 적혀 있었는데 빠르게 내용을 보느라 인지하지 못하고 과정을 거치지 않고 그대로 빌드하였다. 이렇게 하니 로그에 다음과 같은 에러가 발생하였다.