2017-12-22 1 views
0

내 Firebase 보안 규칙에 대한 권한에 문제가 있습니다. 나는 다음과 같은 오류를 기록하고 있습니다 .. 여기 Flutter가 작동하지 않는 Firebase 읽기/쓰기 규칙이 있습니까?

[Firebase/Database][I-RDB03812] Listener at /users/4eb8920a-e407-4488-bce4-c6f64f7b0891/Following/4eb8920a-e407-4488-bce4-c6f64f7b0891 failed: permission_denied 
[Firebase/Database][I-RDB03812] Listener at /UserVideo/4eb8920a-e407-4488-bce4-c6f64f7b0891 failed: permission_denied 
[Firebase/Database][I-RDB03428] Using an unspecified index. Consider adding ".indexOn": "displayName" at /users to your security rules for better performance 

내 규칙 구조입니다 : 내 데이터를 구조화하고있어 어떻게

다음
{ 
    "rules": { 
    "$user_id": {".write": true, ".read": true} 

    } 
} 

은 ...

UserVideo 
    080d4874-47d9-4f4e-b815-9b8dc9c8a2ba 
    13566fd4-047b-4d62-b2e5-e885e6667430 
    2bd7038f-5490-470e-94eb-87695e4b1071 
    2d84a15b-d0aa-4671-9f59-02f9d2ac5207 
    3af71559-5c51-40c6-b2aa-8631671c2c25 
    3fFH6evUANf3WDbDS3caiQu9crD3 
    4eb8920a-e407-4488-bce4-c6f64f7b0891 
     Vid1 
     Vid10 
     Vid2 
     Vid3 

users 
4eb8920a-e407-4488-bce4-c6f64f7b0891 
    FollowedBy 
    followedBy: 
     2 
Following 
    4eb8920a-e407-4488-bce4-c6f64f7b0891 
displayName: 
    "Charles" 
photo: 
    "placeholder" 

내 가정 내 규칙에 따라 사용자는 사용 가능한 경로를 읽고 쓸 수 있었지만 뭔가를 놓친 것 같습니다.

답변

2

이전에이 문제가 발생했습니다. 당신이 uid를 사용하지 않고 다른 id 인스턴스를 사용하고있는 것처럼 보입니다. firebase 인스턴스에서 uid를 얻는 방법은 다음과 같습니다 :

final FirebaseAuth auth = FirebaseAuth.instance; 

var tempUser = await auth.currentUser(); 
currentUser= tempUser.uid; 

루트 아래에있는 uid 하위로 밀고 있는지 확인하십시오.

reference.child(currentUser).push().set({           
    'video': 080d4874-47d9-4f4e-b815-9b8dc9c8a2ba,            
}); 

마지막으로 읽기 및 쓰기 규칙을 다음과 같이 firebase에 설정하십시오.

{ 
    "rules": { 
    "$user_id": { 
     ".write": "auth != null && auth.uid == $user_id", 
     ".read": "auth != null && auth.uid == $user_id" 
    } 
    }, 
} 
+0

네 말이 맞아. 어째서 내 응용 프로그램에서 제대로 인증되지 않을거야. SWIFT 코드를 살펴 봤는데'FirebaseAuth.instance.currentUser(). uid'는 제가 사용했던 코드입니다. Flutter에서'FirebaseAuth.instance.currentUser()'는 currentUser가 함수가 아니라는 에러를 반환합니다. 앱 전체에서 올바르게 인증하는 방법에 대한 아이디어가 있습니까? –

+1

정말 신속하게 사용해 본 적이 없지만 Flutter SDK 사이트에서이 링크를 확인하십시오. [https://codelabs.developers.google.com/codelabs/flutter-firebase/#5](https://codelabs.developers.google.com/codelabs/flutter-firebase/#5) 집중해야 할 주요 기능 on은'_ensureLoggedIn()'입니다. 이 함수를 사용하면 사용자가 Google을 통해 로그인 할 수있게되며 UIS를 가져 오는 방법은 위의 대답에서 참조 할 수 있습니다. _ensureLoggedIn()이 호출되면 – Solo

관련 문제