授权使用来自 Google API 的数据 return

Authorizing using data return from a Google API

我是 Firebase 的新手,所以请原谅我缺乏基本知识。我正在为一个项目评估它。

Firebase 可以很好地处理 Google 身份验证。但是,如何根据 Google API 返回的信息授权用户呢?当 Firebase 非常依赖客户端时,我该如何确保安全性?

例如,假设我想根据 Google 图书 API 是否确认用户拥有一本书来限制对 firebase 数据的访问。我知道在授权用户后我可以像这样将数据传递给令牌(这是半伪代码):

ref.child("users").child(authData.uid).set({
  provider: authData.provider,
  ownsBook: getBookInfo.ownsBook()
});

我想使用 "ownsBook" 参数来决定用户是否可以访问 firebase 数据,但由于这一切都必须在客户端发生,所以如何阻止某人通过手动覆盖它JS 控制台?

您通常会如何在 Firebase 中执行此类操作?

我认为 Firebase 不会公开 Google 书籍 API 中的信息(但我可能是错的)。

除此之外:您将使用 Firebase 的安全规则限制对数据的访问:https://www.firebase.com/docs/security/quickstart.html

因此,如果我们假设您在这样的数据结构中拥有书籍和所有权:

root
  users
    google:3246734
      booksOwned
        book:743267
  books
    book:743267
      title....

您的规则可能类似于

{
  "rules": {
    "book": {
      $book_id: { 
        ".read":
          "root.child(auth.uid).booksOwned.child($book_id).exists()" 
        }
      }
    }
  }
}

因此,为了获得对特定图书(由 $book_id 表示)的访问权限,我们检查用户 booksOwned 节点中是否存在该图书 ID。