구글 api로 로그인 처리 에러...
비라코챠

Lv.1 비라코챠 (121.♡.94.168)

2024년 5월 3일 AM 09:23 · 수정됨(05. 04. 00:17)

조회 407 공감 0

개발 관련 문의인데 조언 해주실 앙님들이 있을지 몰라 글 올려봅니다.

자바사이트 개발중입니다.

다모앙 사이트에도 있지만 소셜 아이디로 로그인하는 기능이 있는데요 

기능을 붙여보려고 개발중입니다.

카카오, 네이버는 그럭저럭 로그인은 되는 것 같은데, 구글은 계속 에러가 발생하네요 ㅠ

레퍼런스 사이트를 참고했는데 구글API 생성하고 로그인창 떠서 정보는 가져오는데 

ResponseEntity<GoogleResponse> resultEntity = restTemplate.postForEntity("https://oauth2.googleapis.com/token",
googleOAuthRequestParam, GoogleResponse.class);

토큰을 받아오는 함수를 호출하면 400 Bad Request라고 에러를 뱉어냅니다 ㅠ

"error": {
"code": 400,
"message": "Invalid JSON payload received. Expected a value.\n\u003cGoogleRequest\u003e\u003cclie\n^",
"status": "INVALID_ARGUMENT"
}

googleOAuthRequestParam의 형태가 잘못되었다는 것 같은데 .. ㅠㅠ

뭐가 잘못된 걸 까요? 

구글링해도 INVALID_ARGUMENT 관련 언급은 없네요 ㅠ

댓글 (11)

  • 꼬끼

    꼬끼 Lv.1

    24.05.03 · 1.♡.148.2

  • 꼬끼

    꼬끼 Lv.1 → 꼬끼

    24.05.03 · 1.♡.148.2

    query string 형태로 아규먼트를 보내고있는건지 확인해보세요
  • 꼬끼

    꼬끼 Lv.1 → 꼬끼

    24.05.03 · 1.♡.148.2

    googleOAuthRequestParam 에 Invalid JSON payload received. Expected a value.\n\u003cGoogleRequest\u003e\u003cclie\n^
    이부분 디코드해보니 json 형태로 안보내고계신 것 같습니다.

    엔드포인트 https://oauth2.googleapis.com/token url도 체크해보세요
    제가 대강 구글링해보니 중간에 버전정보도 추가된 예시가 많아서요.
    ex) https://oauth2.googleapis.com/v4/token
  • 비라코챠

    비라코챠 Lv.1 → 꼬끼 작성자

    24.05.03 · 121.♡.94.168

    알려주신 참조사이트를보고 체크하고 있는데요
    저는 postman은 쓰지 않고 talent API Tester라는 크롬확장프로그램을 쓰는데 post 해보니 token값 리턴 잘 됩니다ㅠㅠ
    말씀해주신 것 처럼 googleOAuthRequestParam이 json형태가 아닌 문제로 보입니다
    로그 찍어봤는데 보기엔 json형태가 맞는데 시스템이 인식을 못하는건지.. ㅠ
    객체를 생성할때 json형태로 만들어줘야 한다는 언급은 참조사이트엔 없었는데 수정을해봐야 할것 같습니다. ㅠ
  • 꼬끼

    꼬끼 Lv.1 → 비라코챠

    24.05.03 · 1.♡.148.2

    json형태로 보인다고 하셨는데, 파라미터를 json object로 변환을 해주셨을까요?
    제가 비라코챠님이 어느정도의 개발수준을 가지고계신분인지 모르고, 작성하신 코드도 일부라ㅎㅎ...
  • 비라코챠

    비라코챠 Lv.1 → 꼬끼 작성자

    24.05.03 · 121.♡.94.168

    아예 jsonObject 로 만들었습니다
    JsonObject googleOAuthRequest = new JsonObject();
    googleOAuthRequest.addProperty("client_id", GOOGLE_CLIENT_ID);
    googleOAuthRequest.addProperty("client_secret", GOOGLE_CLIENT_SECRET);
    googleOAuthRequest.addProperty("redirect_uri", GOOGLE_REDIRECT_URI);
    googleOAuthRequest.addProperty("grant_type", "authorization_code");
    googleOAuthRequest.addProperty("code", authCode);

    이번엔 다른 에러네요.. ㅠㅠ
    .... JsonObject (through reference chain: com.google.gson.JsonObject["asString"])
  • 비라코챠

    비라코챠 Lv.1 → 꼬끼 작성자

    24.05.03 · 121.♡.94.168

    jsonObject를
    String json = new ObjectMapper().writeValueAsString(googleOAuthRequestParam);
    로 만들어서 넘겨봤는데 에러가
    .... 401 Unauthorized: [no body] 로 나오네요 ㅠㅠ
  • 꼬끼

    꼬끼 Lv.1 → 꼬끼

    24.05.03 · 1.♡.148.2

    혹시 위 문제가 아니면 참고하고계신 레퍼런스 사이트나 google api dev 링크 하나 남겨주시면 오후에 시간나면 보겠습니다.
    (회의중에 남긴거라 듬성듬성 봐서요ㅠㅠ...)
  • 비라코챠

    비라코챠 Lv.1 → 꼬끼 작성자

    24.05.03 · 121.♡.94.168

    제가 참고했던 레퍼런스 사이트 입니다.
    https://ecolumbus.tistory.com/169
  • 비라코챠

    비라코챠 Lv.1 → 꼬끼 작성자

    24.05.03 · 121.♡.94.168

    알려주신 참조 사이트가 도움이 되었습니다. 감사합니다.
    역시 에러는 오타부터 확인해야 하나 봅니다. ㅠㅠ
    json으로 형변환해야 했고 오타까지 있었어서 많이 헤멨네요^^;;

댓글을 작성하려면 이 필요합니다.