수우주에 구독 기능을 추가하고, 이를 사용자별로 할당하기 위하여 구글 로그인 기능을 사용하려고 했다.
구글에서 로그인 기능을 사용하고 아래의 조건하에 사용하려면 인증을 거쳐야 한다고 옆에 도움말에 나왔다.
앱이 외부 사용자용으로 구성되었고 게시 상태가 '프로덕션 단계'로 설정되었으며 다음 중 하나 이상을 충족하는 경우 앱에서 인증을 거쳐야 할 수 있습니다.
- 애플리케이션을 통해 아이콘 또는 앱 이름을 표시하려는 경우
- 앱에서 민감한 범위 또는 제한된 범위의 승인을 요청하는 경우
- 앱의 승인된 도메인 수가 프로젝트의 도메인 수 한도를 초과 하는 경우
- 앱을 승인받은 후 OAuth 동의 화면에 대한 변경사항이 있는 경우
나는 로그인할 때 아이콘과 앱 이름을 표시하고자 했으므로, 전에 인증을 받아 두었다.
(이 인증 과정도 꽤 시간이 걸리므로, 사용하고자 하시는 분들은 미리 미리 인증을 받아 두는 것이 좋을 것 같습니다.)
그런데, Google Cloud OAuth 동의화면에서 구글로부터 인증 받았음이라고 표시됨에도 불구하고 로그인 시 "Google에서 확인하지 않은 앱"이라는 메시지가 나타났다.
물론 이 화면에서 맨 아래에 있는 잘 보이지도 않는 Go to Numverse를 누르면 로그인을 계속할 수 있지만, 내가 협박(?)해서 깔게 만든 사람 빼고 저걸 누르지는 않을 테니, 이 화면을 없애야 했다.(더구나 저렇게 안전하지 않다고 괄호 안에 표시까지 되어있으니...)
이것 저것해보다가 결국 문제점을 알게 되었다.
Cloud console에서 설정한 범위와 수우주앱에서 로그인을 위해 호출하는 함수에서 설정한 범위가 일치하지 않아서 생기는 문제였다.
(물론 여기가 같게 설정되어 있다면, 다른 문제이실 수 있을 것 같습니다. 그건 다른 분들이 해결해 주실 수 있으실 거라고 믿고 있겠습니다.)
Future<void> logInWithGoogle() async {
final googleSignIn = GoogleSignIn(
scopes: [
'email',
'https://www.googleapis.com/auth/contacts.readonly', //문제의 부분
],
);
...
}
이 글은 Google Cloud OAuth 동의화면에서 발생하는 "Google에서 확인하지 않은 앱" 문제에 대한 해결 방법이었다.
결국, 아무 생각 없이 붙여 넣은 코드 때문에 몇 시간 동안 더 고민하게 된 상황이었다.
다른 분들은 이 글을 한방에 검색해서 좀 더 빨리 문제 해결하실 수 있게 되면 좋겠습니다.
나만을 위한 계산기가 필요하다면 구글 플레이에서 수우주를 다운로드하여 주세요.