【问题标题】:Firebase DB not possible to update, only works in debug modeFirebase DB 无法更新,只能在调试模式下工作
【发布时间】:2020-12-05 08:17:35
【问题描述】:

我有一个 react-native 应用程序,它可以确定用户是否允许 Firebase 云消息传递,然后保存用户令牌。它还会在大约同一时间保存用户 GeoLocation。

如果在我的模拟器上启用了调试模式,这些功能都可以正常工作。但是,如果调试模式未运行,我会收到权限被拒绝警告。有谁知道为什么这只在调试模式下有效?

        geoFire.set(uid, [userLocation.lat, userLocation.lng]); 

上面的代码应该保存位置。 (这适用于启用调试模式)。

const firebaseConfig = {
    apiKey: 'AIzaSyAZxxxxxxx',
    authDomain: 'thxxxxxx',
    databaseURL: 'https://thxxxxxxx',
    storageBucket: 'thxxxxxxxxxxxxx',
}

// Initialize Firebase
const Firebase = firebase.initializeApp(firebaseConfig)

我使用具有以下访问规则的实时数据库

{
  "rules": {
    ".read": "auth.uid != null",
    ".write": "auth.uid != null"
  }
}

我发现很多用户收到此警告消息/问题是因为数据库的权限不正确。但是,我使用 Firebase 手册仔细检查了这些内容,它们应该像这样工作(在 Firebase 控制台的规则游乐场中测试。

【问题讨论】:

    标签: firebase react-native firebase-realtime-database react-native-firebase


    【解决方案1】:

    权限被拒绝错误意味着安全规则拒绝了查询。如果您的应用的唯一规则是此处显示的内容,则表示在查询时没有用户登录该应用。

    【讨论】:

    • 嗯,我确实有一个登录用户,带有令牌和刷新令牌等。但是我对数据库进行的所有其他查询都使用 http 链接,我在其中放置了用户令牌和所有这些作品。例如,我应该如何登录用户才能使 Geofire set commando 工作?
    • 我不确定你的意思。您是说您使用 REST API 而不是提供的 SDK 向数据库发出请求? REST API 有自己的方式来指定经过身份验证的用户,您需要按照文档进行操作。
    • 抱歉,我有两个函数不适用于 REST API。这些工作正常。所以我想我必须弄清楚如何使用 react-native-firebase 包对用户进行身份验证?
    • 是的,这是使用您现在拥有的规则的要求。
    • 所以我终于在这个问题上走得更远了,但我在文档中找不到我应该如何处理这个问题。我在异步存储中有令牌和刷新令牌。打开应用程序时,它会检查令牌是否有效,如果不是,它会使用刷新令牌获取新令牌。但是我找不到让我只使用令牌/刷新令牌/用户 ID 或其他东西登录用户的功能。用户不会一直登录应用程序,因为令牌是有效的。有没有这样的功能,只用token和id什么的就可以登录用户?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多