본문 바로가기

Programming/안드로이드

파이어베이스 Firebase 푸시 PERMISSION_DENIED SOLVED!

안드로이드 스튜디오 Firebase - Login(auth) / Push [구글로그인코드적용] (2019.06.03)
안드로이드 스튜디오 Firebase - Login(auth) / Push [푸쉬코드적용] (2019.06.03)
안드로이드 스튜디오 Firebase - Login(auth) / Push [환경설정] (2019.05.28)
유니티(Unity) Firebase Analytics 사용시 Null Error
유니티(Unity) Firebase 추가시 Firebase.Editor.dll not loaded error
유니티(Unity) 빌드시 Firebase 오류

앱푸시

앱푸시를 받기 위해서 파이어베이스를 주로 사용합니다. 그런데 아주 오랫동안 프로젝트 관리를 하지 않다가 최근에 파이어베이스 푸시가 되지 않는 현상을 마주하게 되었습니다. 오늘은 오래된 파이어베이스 푸시 문제를 해결한 기록을 공유합니다.

----

----

문제의 로그 log

'Requests from this Android client application '페키지이름' are blocked.'

Error when communicating with the Firebase Installations server API. HTTP response: 
[403 Forbidden: {
  "error": {
    "code": 403,
    "message": "Requests from this Android client application '페키지이름' are blocked.",
    "status": "PERMISSION_DENIED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "API_KEY_ANDROID_APP_BLOCKED",
        "domain": "googleapis.com",
        "metadata": {
          "service": "firebaseinstallations.googleapis.com",
          "consumer": "projects/'프로젝트 번호'"
        }
      }
    ]
  }
}]

해당 문구를 살펴보면 권한이 거부되었다면서 error를 보여줍니다. 분명히 Firebase에서 발생한 것은 맞고 Firebase 중에 Installations라는 서비스의 사용이 거부되었다는 뜻으로 보입니다.

파이어베이스의 푸시기능이 정상적으로 작동하지 않는 것에는 몇 가지 이유가 있습니다. google-service.json을 프로젝트 안에 넣지 않았다거나 넣긴 했는데 정보가 누락되거나 잘못되었을 때 정상적으로 작동하지 않을 수 있습니다. 

하지만 몇 년간 잘 작동하다가 이런 경우가 발생하였다면 Google Cloud Console에 접속하여 원인을 찾아야 합니다.

우선은 Firebase Installations server API와 통신 중에 발생하였다고 하니 Google Cloud Console에서 'AIP 및 서비스'에 들어가 봅니다.

그리고 API 키를 확인할 수 있는 '사용자 인증 정보' 화면으로 진입합니다.

API 키 카테고리 아래 여러분이 아주 오래전에 세팅해 놓은 Key들이 보일 것입니다. 이 키들 중에서 google-servie.json 에 'current_key'에 적혀있는 api key와 같은 키를 찾아야 합니다.

아마도 AOS 면 Android key (auto created by firebase)가 보통 그에 해당할 것입니다.

이제 해당 키 안에 들어가 보면 '애플리케이션 제한사항 설정'이란 항목이 있고 아래에 'API 제한사항'이란 항목이 보일 것입니다.

'애플리케이션 제한사항 설정'을 '없음'으로 변경하고

'API 제한사항'을 '키 제한'으로 변경한 후에 Api를 선택하는 드롭다운 메뉴가 나오는데 그곳에서 사용하는 Api 들을 선택해 주고 반드시 'Firebase Installations API'이 들어가도록 해줍니다.

수정 후에 반드시 하단에 '저장' 버튼을 눌러줍시다.

이제 길면 10분 빠르면 2~3분 뒤에 다시 파이어베이스 초기화를 시도하면 정상적으로 기능이 동작하는 것을 확인할 수 있습니다.

해당 이슈는 AOS, IOS 공통으로 발생할 수 있으며 앱 클라이언트 이슈가 아닌 세팅의 문제 이므로 앱을 업데이트할 필요는 없습니다.