안드로이드 앱 개발기 #1 - 페이스북 로그인 연동시 발생했던 문제들

in zzan3 years ago

안드로이드 웹뷰에서 페이스북 로그인이 10월 5일부로 막혔다. 이를 해결하기 위해 했던 작업들은 다음과 같다.

(1) 웹뷰에서 페이스북 로그인 버튼을 클릭하면, 외부 로그인 화면으로 이동한다.
(2) 로그인을 마치고 웹뷰 화면으로 돌아오면, 다음 웹 페이지로 이동하는 자바스크립트 함수를 실행한다.
(이 때, 전달하는 파라메터는 로그인 후 받은 액세스 토큰이다.)

문제점 1 - The App_id in the input_token did not match the Viewing App

그런데 여기서 발생한 문제점이 있었다. (2) 실행 후 원하는 다음 화면으로 이동하는 게 아니라 오류 팝업이 뜨는 것이었다. (이 팝업은 오류/예외 발생시 웹에서 띄우는 것) 웹개발팀에서는 액세스 토큰을 확인할 때 아래와 같은 메시지를 받았다고 알려 주었다.

"The App_id in the input_token did not match the Viewing App"

처음에는 이게 무슨 뜻인지 이해하지 못 했다. 인터넷 검색을 해봐도 뾰족한 답이 보이지 않았다. 답은 위 문구 자체에 있었다. 앱에서 사용 중인 앱ID(페이스북 개발자 페이지에서 등록한 앱의 ID)와 웹뷰에서 사용 중인 앱ID가 다른 것이 문제의 원인이었다. 앱에 추가했던 앱ID와 fb_login_protocol_scheme을 웹뷰에서 사용하는 것과 동일하게 맞추었다.

문제점 2 - User logged in as different Facebook user.

처음에는 페이스북 로그인이 잘 되었다. 그러나 앱을 종료하고 다시 시작해서 로그인을 시도할 때 문제가 발생했다. 디버깅 모드로 앱을 실행하면서 FacebookCallback 객체가 onError 메소드를 실행했고, exception 객체는 다음과 같은 메시지를 보여주었다.

User logged in as different Facebook user.

이 문제는 로그인을 실행하기 전에 아래 코드를 실행하는 것으로 해결되었다.

LoginManager.getInstance().logOut();

문제를 해결하며...

페이스북 로그인 구현은 경험이 없는데다 로그인 후 웹뷰를 다시 연결해야 하는 특수한 상황이어서 어려움이 있었다. 나중에 같은 시행착오를 겪지 않기 위해 문서로 작성해 둔다.

다음에 하고 싶은 건...

다음과 같은 문서를 정리해보고 싶다.

  • 안드로이드 앱에서 페이스북 로그인을 하는 방법
  • 페이스북 로그인 후 Graph API를 이용하여 페이스북으로부터 데이터를 읽고 쓰는 방법

참고 사이트

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 63877.55
ETH 3143.56
USDT 1.00
SBD 3.97