[EXPO] Google 로그인 과정에서 로그인 이후 google.com 으로 리디렉션 되는 문제

친절하지 못한 업데이트로 인한 에러는 해결해도 뭔가 시원하지 않다. 여전히 찜-찜하다.

문제

확실히 잘 모르겠다. 내가 이해한 바로는 Expo SDK 32 부터 이런 문제가 있는 거 같은데, 깃허브에 이미 이슈로 등록되어있고 고쳐주길 기다리는 사람과, 급해서 자기가 알아보고 의견을 제시하는 두 부류의 사람들이 참여 중이었다. 서비스 업데이트 하는데 갑자기 로그인이 말썽이면 얼마나 서글플까 싶다.

Expo SDK 31버전 이후부터 구글 로그인에 필요한 설정파일 (googleServiceConfig)에 redirectUrl 이라는 항목이 생겼다. 그래서 기존 설정파일로는 이 경로를 세팅할 수 없었고 기본값으로 google.com이 지정이 된다. 이로 인해 await Google.logInAsync(googleServiceConfig) 이 부분이 pending 되고 사용자들은 멀뚱히 구글의 메인페이지만 보게 된다.

뭐 어쩌라는거지. 여봐요 로그인이 안되요.

해결

  1. expo install expo-app-auth

    업데이트 된 expo-cli에서는 expo 관련 모듈 설치를 편하게 할 수 있도록 expo install 을 통해 가능하도록 해주었다.

  2. googleServiceConfig파일 주입

1
2
3
4
5
6
7
8
9
10
11
12
// signInScreen.js
...
import * as AppAuth from 'expo-app-auth';
...

const googleServiceConfig = {
...
redirectUrl:`${AppAuth.OAuthRedirect}:/oauth2redirect/google`
}

...
await Google.logInAsync(googleServiceConfig);

expo-app-auth 라이브러리에서 제공하는 AppAuth를 통해서 디바이스의 id값(com.company.somewhere)을 포함하는 리디렉션 주소를 명시함으로서 구글 로그인 이후 google.com 이 아닌 앱 내부로 돌아오게 해준다.

참조

https://github.com/expo/expo/issues/4655#issuecomment-510081708
https://github.com/expo/expo/pull/4671#issue-290264117

공유하기