오류 처리

오류는 여러 레이어에서 발생할 수 있습니다. 오류가 발생한 위치에 따라 알림이 다르게 표시될 수 있습니다.

필수 OAuth 매개변수 누락

client_id 또는 범위와 같은 필수 OAuth 매개변수를 설정하지 않으면 브라우저의 JavaScript 콘솔에 아래와 같은 오류 메시지가 표시됩니다.

JavaScript 콘솔 오류

OAuth 구성 오류 수정

일부 오류를 해결하려면 Google API 콘솔을 변경해야 할 수 있습니다.

잘못된 OAuth 매개변수 값

잘못된 클라이언트 ID, 범위 식별자 또는 응답 유형 값과 같은 잘못된 값을 OAuth 매개변수로 설정하면 OAuth 오류 페이지가 표시됩니다.

OAuth 오류

OAuth 오류 응답

OAuth에서 오류 응답을 반환할 수 있습니다. 이 경우 callback 함수가 오류 응답을 매개변수로 사용하여 트리거됩니다. 다음은 OAuth 오류 응답의 예입니다.

  {
    "error":"access_denied"
  }

다음은 몇 가지 예입니다.

  1. 사용자가 OAuth 요청을 거부합니다.
  2. prompt=none 매개변수가 있는 OAuth 요청의 경우 사용자는 아직 인증되지 않았으며 요청된 범위에 대한 동의를 사전 구성하지 않았습니다.

아래 예는 성공 및 오류 OAuth 응답을 처리하는 방법을 보여줍니다.

function myCallback(response) {
  if (response.error) {
    // Handle error response
    ... ...
  } else if (response.code) {
    // Handle success code response
    ... ...
  }
}

OAuth 외 오류

다음과 같은 경우 OAuth는 동작을 정의하지 않습니다.

  1. 팝업 창이 열리지 않습니다.
  2. OAuth 응답이 반환되기 전에 팝업 창이 닫힙니다.

이 라이브러리는 이러한 오류를 캡처하고 설정된 경우 error_callback를 트리거합니다. 아래와 같이 오류 유형을 확인하세요. 그러지 않으면 이 라이브러리가 나중에 새 오류 유형을 지원할 때 코드 로직이 영향을 받을 수 있습니다.

function myErrorCallback(err) {
  if (err.type == 'popup_failed_to_open') {
    // The popup window is failed to open
    ... ...
  } else if (err.type == 'popup_closed') {
    // The popup window is closed before an OAuth response is returned
    ... ...
  }
}

const client = google.accounts.oauth2.initCodeClient({
  client_id: 'YOUR_GOOGLE_CLIENT_ID',
  scope: 'https://www.googleapis.com/auth/calendar.readonly',
  ux_mode: 'popup',
  callback: myCallback,
  error_callback: myErrorCallback
});