비개발자 연구실

구글 동의 화면이 "테스트 중"이면 7일마다 서버가 멈춘다

Apps Script 웹 앱을 구글 클라우드 프로젝트에 연결했다면 꼭 확인할 것. 테스트 상태의 승인은 7일 뒤 만료되고, 게시하려면 홈페이지와 개인정보처리방침 주소가 필요하다. 프로덕션 게시까지의 과정.


지난 글에서 “차단된 앱” 오류를 구글 클라우드 프로젝트 연결로 풀었습니다. 승인도 끝났고, 이용권 서버도 인터넷에서 잘 응답했습니다. “이제 끝났다” 싶었는데, 기록을 정리하다 보니 그냥 넘어가면 안 되는 문제가 하나 더 보였습니다. 판매를 시작한 뒤에 알았다면 정말 아찔했을 문제입니다.

먼저, 서버는 누구의 허락으로 움직이나

Easy SNS 이용권 서버는 Apps Script 웹 앱으로 배포했습니다. 배포할 때 두 가지를 정합니다.

  • 다음 사용자 인증 정보로 실행: 나 — 서버가 판매자인 제 계정 권한으로 시트를 읽고 씁니다.
  • 액세스 권한이 있는 사용자: 모든 사용자 — 구매자의 확장이 구글 로그인 없이 서버에 요청할 수 있습니다.

여기서 중요한 건 첫 번째입니다. 서버는 제가 해 둔 “승인” 을 빌려서 움직입니다. 구매자가 백 명이든 천 명이든, 서버가 살아 있으려면 제 승인이 계속 유효해야 합니다.

테스트 상태의 승인은 7일짜리

구글 클라우드에서 동의 화면을 만들면 처음에는 “테스트 중” 상태로 시작합니다. 지난 글에서 테스트 사용자에 제 이메일을 넣은 것도 이 때문이었죠. 그런데 이 상태에는 함정이 하나 더 있었습니다.

대상이 “외부”이고 게시 상태가 “테스트 중”이면, 구글은 승인(갱신 토큰)을 7일 뒤에 만료시킨다.

비슷한 일을 겪은 개발자들의 기록과 구글 클라우드 도움말을 확인해 보니, 테스트 사용자가 해 준 승인은 동의한 시점부터 7일이 지나면 풀린다고 되어 있었습니다. “나로 실행” 웹 앱이라면 승인이 풀리는 순간 서버가 멈춥니다. 구매자들은 갑자기 프로그램을 못 쓰게 되고, 저는 그때마다 다시 승인을 눌러 줘야 합니다.

테스트 중과 프로덕션 비교

해결: “프로덕션”으로 게시하기

방법은 간단합니다. 동의 화면을 “앱 게시” 해서 프로덕션 단계로 바꾸면 7일 제한이 사라집니다.

“게시”라고 하니 구글 심사를 받아야 하나 걱정했는데, 확인해 보니 그렇지 않았습니다. 앱이 민감한 권한을 쓰면 일반 사용자에게 공개하기 전에 심사를 받아야 하지만, 저처럼 승인하는 사람이 내 계정 하나뿐인 서버라면 심사 없이도 쓸 수 있습니다. 승인 화면에 “확인되지 않은 앱” 경고가 뜰 뿐이고, 제가 직접 “계속”을 누르면 됩니다.

그런데 막상 대상 화면에서 앱 게시 버튼을 누르려고 보니 버튼이 잠겨 있었습니다.

앱을 게시하려면 브랜딩 페이지에서 구성을 완료해야 합니다.

잠긴 이유: 브랜딩 페이지의 빈칸

브랜딩 페이지에 가 보니 앱 이름과 이메일 말고도 이런 칸이 비어 있었습니다.

브랜딩에 필요한 4가지

  • 애플리케이션 홈페이지
  • 개인정보처리방침 링크
  • 서비스 약관 링크
  • 승인된 도메인

즉, 누구나 볼 수 있는 내 사이트와, 그 안의 개인정보처리방침·약관 페이지가 있어야 했습니다. 노션 같은 공개 페이지로 대충 때울 수도 있었지만, 마침 필요한 일이 몇 가지 겹쳐 있었습니다.

  • 크롬 웹스토어에 확장을 올릴 때도 개인정보처리방침 주소가 필요하고
  • 앞으로 만들 프로젝트들을 모아 둘 곳도 필요했고
  • 구글 애드센스로 수익화할 계획도 있었습니다.

그래서 이참에 제대로 된 사이트를 열기로 했습니다. 지금 보고 계신 비개발자 연구실이 그렇게 생겼습니다. 사이트를 연 과정은 다음 글에서 따로 정리하겠습니다.

게시 순서

사이트가 열린 뒤에는 금방 끝났습니다.

  1. 구글 클라우드 콘솔 → Google 인증 플랫폼 → 브랜딩
  2. 애플리케이션 홈페이지: https://nondevlab.com
  3. 개인정보처리방침 링크: https://nondevlab.com/easy-sns/privacy/
  4. 서비스 약관 링크: https://nondevlab.com/easy-sns/terms/
  5. 승인된 도메인: 도메인 추가 → nondevlab.com → 저장
  6. 대상 → 앱 게시 → “프로덕션으로 푸시하시겠어요?” → 확인

게시 상태가 “프로덕션 단계” 로 바뀌었고, 대상 화면의 “테스트로 돌아가기” 버튼이 그 증거가 됐습니다. 게시 직후 서버에 다시 요청을 보내 이용권 확인과 사진 검색이 정상인 것도 확인했습니다.

확인 창에는 “10개를 초과하는 도메인이 있거나, 로고가 있거나, 민감한 범위를 요청하는 경우 인증을 위해 제출해야 한다”는 안내가 나옵니다. 로고를 올리지 않은 것도 그래서입니다. 로고를 올리면 심사 대상이 되니, 내 계정 하나로 쓰는 서버라면 로고 칸은 비워 두는 편이 편합니다.

하나 더: 테스트 때 받은 승인

테스트 상태일 때 이미 받아 둔 승인은, 처음 정해진 대로 7일 뒤 풀릴 수 있습니다. 저는 그 시점(승인 후 약 일주일)에 서버가 응답하지 않으면 시트 메뉴에서 승인을 한 번만 다시 하기로 메모해 두었습니다. 프로덕션 상태에서 새로 받은 승인은 만료되지 않습니다.

문제가 다음 할 일을 정해 줬다

돌이켜 보면 이 과정은 한 줄로 이어져 있었습니다.

문제가 다음 할 일을 정해 준 흐름

차단된 앱을 풀었더니 7일 제한이 나왔고, 7일 제한을 풀려니 사이트가 필요했고, 사이트를 만들고 나니 크롬 웹스토어와 애드센스 준비까지 한 번에 길이 열렸습니다. 비개발자에게는 이런 “연쇄”가 가장 막막한 부분인데, 하나씩 풀다 보면 결국 필요한 순서대로 일이 정리된다는 걸 느꼈습니다.

정리

  • Apps Script 웹 앱을 “나로 실행” 으로 배포했다면, 서버는 내 승인으로 움직인다.
  • 동의 화면이 테스트 중이면 승인이 7일마다 만료된다. 실제 서비스라면 프로덕션으로 게시한다.
  • 내 계정 하나만 승인하는 서버라면 심사 없이 게시해서 쓸 수 있다. 로고는 올리지 않는다.
  • 게시하려면 홈페이지·개인정보처리방침·약관 주소와 승인된 도메인이 필요하다. 내 사이트가 있으면 해결된다.
← 연구 기록 목록