Firebase를 연동시킨 프로젝트를 실행하다 보면 다음과 같은 에러를 만날 수 있습니다.
W/Firestore( 3783): (24.2.0) [Firestore]:
Listen for Query(target=Query(users/dvGKULWHQYSkAjzpftRNB4XxGjn2 order by __name__);limitType=LIMIT_TO_FIRST) failed:
Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
이 에러는 사용자가 firestore에 접근할 수 있는 권한이 거부되었기 때문에 발생하는 에러입니다 !!
처음 firestore를 실행시킬 때 데이터베이스를 테스트 모드로 생성했다면 다음과 같은 규칙이 자동으로 적용됩니다.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if
request.time < timestamp.date(2022, 8, 15);
}
}
}
이 규칙은 request.time의 timestamp가 2022.8.15 이하일 경우, 모든 읽기와 쓰기를 허용한다는 뜻입니다.
그렇기에 그 이후에 접근하는 값들에 대해서는 권한이 거부될 수 밖에 없습니다. 이러한 상황에서는 다음과 같이 규칙을 바꿔주면 정상적으로 작동하게 됩니다.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if
request.auth.uid != null;
}
}
}
인증된 모든 사용자가 권한에 접근할 수 있는 방법인데, auth.uid는 firebase의 authentication를 통해 로그인 된 사용자를 의미하고, 그러한 사용자들에 한해서 접근을 허용한다는 것입니다. 만약 그 값이 null이면 권한이 제한됩니다.
firebase console에 들어가, firestore의 규칙을 바꿔주시면 정상적으로 작동하는 것을 확인할 수 있습니다 !!
'Flutter' 카테고리의 다른 글
[Flutter] flutter local notification (0) | 2022.09.27 |
---|---|
[Flutter] Failed to apply plugin 'com.android.internal.version-check'. (1) | 2022.09.25 |
[flutter] Failed host lookup: 에러 (0) | 2022.07.20 |
[flutter] git checkout & pull 오류 (0) | 2022.07.18 |
[flutter] W/System: Ignoring header X-Firebase-Locale because its value was null (0) | 2022.07.18 |