[Google OAuth] Google Cloud OAuth 동의화면 "Google에서 확인하지 않은 앱" 문제 해결

seulinger·2024년 3월 1일
0

개발노트

목록 보기
4/5

개요

수우주에 구독 기능을 추가하고, 이를 사용자별로 할당하기 위하여 구글 로그인 기능을 사용하려고 했다.

구글에서 로그인 기능을 사용하고 아래의 조건하에 사용하려면 인증을 거쳐야 한다고 옆에 도움말에 나왔다.

앱이 외부 사용자용으로 구성되었고 게시 상태가 '프로덕션 단계'로 설정되었으며 다음 중 하나 이상을 충족하는 경우 앱에서 인증을 거쳐야 할 수 있습니다.

  • 애플리케이션을 통해 아이콘 또는 앱 이름을 표시하려는 경우
  • 앱에서 민감한 범위 또는 제한된 범위의 승인을 요청하는 경우
  • 앱의 승인된 도메인 수가 프로젝트의 도메인 수 한도를 초과 하는 경우
  • 앱을 승인받은 후 OAuth 동의 화면에 대한 변경사항이 있는 경우

나는 로그인할 때 아이콘과 앱 이름을 표시하고자 했으므로, 전에 인증을 받아 두었다.
(이 인증 과정도 꽤 시간이 걸리므로, 사용하고자 하시는 분들은 미리 미리 인증을 받아 두는 것이 좋을 것 같습니다.)

그런데, Google Cloud OAuth 동의화면에서 구글로부터 인증 받았음이라고 표시됨에도 불구하고 로그인 시 "Google에서 확인하지 않은 앱"이라는 메시지가 나타났다.

물론 이 화면에서 맨 아래에 있는 잘 보이지도 않는 Go to Numverse를 누르면 로그인을 계속할 수 있지만, 내가 협박(?)해서 깔게 만든 사람 빼고 저걸 누르지는 않을 테니, 이 화면을 없애야 했다.(더구나 저렇게 안전하지 않다고 괄호 안에 표시까지 되어있으니...)

문제

이것 저것해보다가 결국 문제점을 알게 되었다.

Cloud console에서 설정한 범위와 수우주앱에서 로그인을 위해 호출하는 함수에서 설정한 범위가 일치하지 않아서 생기는 문제였다.
(물론 여기가 같게 설정되어 있다면, 다른 문제이실 수 있을 것 같습니다. 그건 다른 분들이 해결해 주실 수 있으실 거라고 믿고 있겠습니다.)

해결 방법

  1. Google Cloud 범위 설정 확인
    - Google Cloud Console의 API 및 서비스 - OAuth 동의 화면으로 이동한다
    - 앱 수정 버튼을 누른다.
    - 저장 후 계속을 눌러서 범위 설정 화면으로 이동한다.
    - 여기에 있는 범위와 앱에서 설정한 범위가 일치 하는 지 확인한다.

  2. 앱의 범위 설정 확인
    • 저는 현재 flutter로 앱개발을 하고 있어서, flutter 기준으로 확인한다.(여러분들은 다른 앱이어도 충분히 비슷한 부분을 찾으실 수 있을거라고 생각합니다.)
Future<void> logInWithGoogle() async {
	final googleSignIn = GoogleSignIn(
      scopes: [
          'email',
          'https://www.googleapis.com/auth/contacts.readonly', //문제의 부분
      ],
	);
    ...
}
  1. 범위 설정 변경
    • 앱에서 설정한 범위와 Console에서 설정한 범위가 일치하지 않으면 범위를 동일하게 설정한다.(저는 pub.dev에 있던 샘플 코드를 붙여 넣다가 저 필요 없는 권한이 들어가 있어서, 해당 부분을 삭제했습니다.)
    • 앱에서 설정 범위를 변경하려면 앱 코드를 수정.
    • Console에서 설정 범위를 변경하려면 "범위" 탭에서 원하는 범위를 선택하고 "저장"을 클릭.

마무리

이 글은 Google Cloud OAuth 동의화면에서 발생하는 "Google에서 확인하지 않은 앱" 문제에 대한 해결 방법이었다.
결국, 아무 생각 없이 붙여 넣은 코드 때문에 몇 시간 동안 더 고민하게 된 상황이었다.
다른 분들은 이 글을 한방에 검색해서 좀 더 빨리 문제 해결하실 수 있게 되면 좋겠습니다.

나만을 위한 계산기가 필요하다면 구글 플레이에서 수우주를 다운로드하여 주세요.

0개의 댓글