문제 해결

동영상: 2019년 워크숍의 오류 처리 대담 확인하기

오류는 잘못된 환경 설정, 소프트웨어의 버그 또는 사용자의 잘못된 입력으로 인해 발생할 수 있습니다. 소스에 관계없이 문제를 해결하고 코드를 수정하거나 사용자 오류를 처리하는 로직을 추가해야 합니다. 이 가이드에서는 Google Ads API의 오류를 해결할 때의 몇 가지 권장사항을 설명합니다.

연결 보장

  1. Google Ads API에 액세스할 수 있고 설정이 올바른지 확인하세요. 응답에서 HTTP 오류가 반환되면 이 오류를 신중하게 해결하고 코드에서 사용하려는 서비스에 도달하도록 해야 합니다.

  2. 서비스에서 사용자를 인증할 수 있도록 요청에 사용자 인증 정보가 포함됩니다. 특히 클라이언트 라이브러리를 사용하지 않고 호출을 처리하는 경우 Google Ads API 요청 및 응답의 구조를 숙지합니다. 각 클라이언트 라이브러리는 구성 파일에 사용자 인증 정보를 포함하는 방법에 대한 구체적인 안내와 함께 제공됩니다 (클라이언트 라이브러리의 README 참조).

  3. 올바른 자격 증명을 사용하고 있는지 확인합니다. 빠른 시작에서는 필요한 올바른 세트를 가져오는 과정을 안내합니다. 예를 들어 다음 응답 실패는 사용자가 잘못된 사용자 인증 정보를 전송했음을 보여줍니다.

    {
      "error": {
        "code": 401,
        "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.",
        "status": "UNAUTHENTICATED",
        "details": [
          {
            "@type": "type.googleapis.com/google.rpc.DebugInfo",
            "detail": "Authentication error: 2"
          }
        ]
      }
    }
    

위 단계를 따른 후에도 계속 문제가 발생하면 Google Ads API 오류 해결을 위한 방법을 자세히 알아보세요.

문제 판단

Google Ads API는 일반적으로 오류를 응답에 오류 목록이 포함된 JSON 실패 객체로 보고합니다. 이러한 객체는 오류 코드와 오류가 발생한 이유를 설명하는 메시지를 제공합니다. 문제가 무엇인지 알 수 있는 첫 번째 신호입니다.

{
  "errors": [
    {
      "errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
      "message": "The field mask contained an invalid field: 'keyword/matchtype'.",
      "location": { "operationIndex": "1" }
    }
  ]
}

모든 클라이언트 라이브러리는 응답에 오류를 캡슐화하는 예외를 발생시킵니다. 이러한 예외를 캡처하고 로그 또는 문제 해결 화면에 메시지를 출력하는 것으로 시작할 수 있습니다. 이 정보를 애플리케이션에 로깅된 다른 이벤트와 통합하면 문제를 일으킬 수 있는 요소에 대한 유용한 개요를 얻을 수 있습니다. 로그에서 오류를 식별한 후에는 그 의미를 파악해야 합니다.

오류 조사

  1. 가장 자주 발생하는 오류를 다룬 일반적인 오류 문서를 참조하세요. 이 가이드에서는 오류 메시지, 관련 API 참조, 오류를 방지하거나 처리하는 방법을 설명합니다.

  2. 일반적인 오류 문서에 해당 오류가 구체적으로 언급되지 않은 경우 참조 문서를 참조하여 오류 문자열을 찾습니다.

  3. 지원 채널을 검색하여 API로 경험을 공유하는 다른 개발자에 액세스하세요. 다른 사람이 여러분이 겪고 있는 문제를 경험해서 해결했을 수도 있습니다.

  4. 문서화되지 않은 오류가 발생하면 포럼에서 Google에 알려주세요.

  5. 유효성 검사 또는 계정 한도 문제를 해결하는 데 도움이 필요하면 Google Ads 고객센터로 이동하세요. Google Ads API는 핵심 Google Ads 제품의 규칙과 제한사항을 상속합니다.

  6. 블로그 게시물은 애플리케이션 문제를 해결할 때 종종 좋은 참고가 됩니다.

오류를 조사한 후 근본 원인을 파악할 차례입니다.

원인 찾기

예외 메시지를 확인하여 오류의 원인을 파악합니다. 응답을 살펴본 후 요청에서 가능한 원인을 확인합니다. 일부 Google Ads API 오류 메시지의 GoogleAdsError location 필드에 fieldPathElements가 포함되어 요청에서 오류가 발생한 위치를 나타냅니다. 예를 들면 다음과 같습니다.

{
  "errors": [
    {
      "errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
      "message": "Criteria type can not be targeted.",
      "trigger": { "stringValue": "" },
      "location": {
        "operationIndex": "0",
        "fieldPathElements": [ { "fieldName": "keyword" } ]
      }
    }
  ]
}

문제를 해결할 때 애플리케이션이 API에 잘못된 정보를 제공하기 때문일 수 있습니다. 디버깅에 도움이 되도록 Eclipse (무료 오픈소스 IDE로 주로 Java 개발에 사용되지만 다른 언어용 플러그인이 있음)와 같은 대화형 개발 환경 (IDE)을 사용하는 것이 좋습니다. 이를 통해 중단점을 설정하고 코드를 한 줄씩 단계별로 실행할 수 있습니다

요청이 애플리케이션 입력과 일치하는지 다시 확인합니다. 예를 들어 캠페인 이름이 요청에 포함되지 않을 수 있습니다. 수행하려는 업데이트와 일치하는 필드 마스크를 보내야 합니다. Google Ads API는 스파스 업데이트를 지원합니다. 변형 요청에서 필드 마스크의 필드를 생략하면 API에서 이 필드를 그대로 두어야 함을 나타냅니다. 애플리케이션이 객체를 검색하고 변경한 후 다시 전송하는 경우 업데이트를 지원하지 않는 필드에 데이터를 쓸 수도 있습니다. 필드를 업데이트할 수 있는 시기나 업데이트에 관한 제한사항이 있는지 알아보려면 참조 문서에서 필드 설명을 확인하세요.

지원을 받는 방법

항상 혼자서 문제를 식별하고 해결할 수 있는 것은 아닙니다. 포럼에 질문을 올리면 동일한 문제를 처리해야 했던 수천 명의 개발자에게 질문이 노출될 수 있습니다.

검색어에 최대한 많은 정보를 포함하세요. 다음의 항목을 포함할 것을 권장합니다.

  • 정리된 JSON 요청 및 응답 개발자 토큰이나 AuthToken과 같은 민감한 정보는 반드시 삭제하세요.
  • 코드 스니펫 언어 관련 문제가 있거나 API 작업에 대한 지원을 요청하는 경우 현재 수행 중인 작업을 설명하는 데 도움이 되는 코드 스니펫을 포함합니다.
  • RequestId입니다. 이렇게 하면 프로덕션 환경에서 이루어진 경우 Google 개발자 관계팀 구성원이 요청을 찾을 수 있습니다. requestId만 사용하는 것보다 더 많은 컨텍스트와 함께 응답 오류를 캡슐화하는 예외에 속성으로 포함된 requestId를 로그에 등록하는 것이 좋습니다.
  • 런타임/통역 버전 및 플랫폼과 같은 추가 정보도 문제 해결 시 유용할 수 있습니다.

문제 해결

이제 문제를 파악하고 해결책을 찾았으므로 변경사항을 적용하고 테스트 계정 (권장) 또는 프로덕션 (버그가 특정 프로덕션 계정의 데이터에만 적용되는 경우)에서 수정사항을 테스트할 차례입니다.

공유 고려

이전에 드러나지 않은 오류에 관한 질문을 포럼에 게시했고 해결책을 찾은 경우 스레드에 추가해 보세요. 다음번에 개발자가 같은 문제가 발생하면 즉시 해결할 수 있습니다.

다음 단계

이제 이 문제를 해결했으니 애초에 이런 문제가 발생하지 않도록 코드를 개선할 수 있는 방법을 발견하셨나요?

적절한 단위 테스트 세트를 만들면 코드 품질과 안정성을 크게 개선할 수 있습니다. 또한 새로운 변경사항 테스트 프로세스의 속도를 높여 이전 기능이 중단되지 않았는지 확인합니다. 좋은 오류 처리 전략은 문제 해결에 필요한 모든 데이터를 표시하는 데에도 중요합니다.