如何检查请求是否来自Firebase管理员,以及如何在Firestore安全规则中进行验证?

时间:2019-03-11 12:48:24

标签: firebase google-cloud-firestore

在我的django服务器中,我正在使用firebase-admin发送fcm通知,并且还通过我的服务器创建了一些文档。每当我尝试在服务器中发送通知时,都会出现错误 “ firebase_admin.messaging.ApiCallError:呼叫者没有权限”,

我认为这是由于我的Firestore安全规则所致。这是我当前在firestore中的安全规则。有没有办法检查我的请求是否来自管理员并且安全?

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if isSignedIn() && emailVerified();
    }

     match /user/{userId} {
        allow read: if isSignedIn() && emailVerified();
      allow write: if isSignedIn();
    }

    function isSignedIn() {
            return request.auth != null;
    }

    function emailVerified() {
        return request.auth.token.email_verified
    }

    function isOwner(userId) {
            return request.auth.uid == userId;
    }

  }
}

1 个答案:

答案 0 :(得分:0)

Firebase Admin SDK以管理特权运行,这意味着它们绕过了数据库的服务器端安全规则。

您的错误来自firebase_admin.messaging,这是对Firebase Cloud Messaging的调用。该呼叫不会受到您的Firestore安全规则的任何影响。

从错误消息中,很可能是您没有将FCM服务器令牌正确传递到呼叫中。