在 Web 本地开发中使用 AppCheck 时,我没有获得调试令牌
I'm not getting Debug Token when using AppCheck in a web Local development
我决定将 AppCheck 添加到我的项目中。我正在使用 Quasar V2 的网络应用程序中实现这一点。 Quasar 为我提供了一些环境变量,具体取决于我处于开发、生产或调试阶段(这类似于生产,但带有 --debug 标志)。
我在 Firebase 控制台有两个项目用于我正在构建的这个产品。一个对应于我的 Testing,另一个对应于 Production 环境。请注意,当在某个分支中创建新的 PR 时,我正在使用 GitHub 操作来触发对 Firebase 托管的部署。这是由 firebase-cli 生成的。
最后,我的本地 development.It 在模拟器中使用 Firebase 服务。
我的问题是我没有在我的浏览器控制台中获取 调试令牌。
这是我根据运行环境配置 Firebase 的客户端文件。
/src/boot/firebase.js
import { boot } from 'quasar/wrappers'
import firebase from 'firebase/app'
import 'firebase/app-check'
import 'firebase/functions'
import 'firebase/auth'
import 'firebase/firestore'
import 'firebase/storage'
const firebaseConfigTesting = {
apiKey: '----------------------------',
authDomain: '-----------------------',
projectId: '-------------------------',
storageBucket: '-----------------',
messagingSenderId: '------------------',
appId: '--------------------------',
measurementId: '-------------------'
}
let app = null
if (process.env.DEBUGGING || process.env.DEV) {
app = firebase.initializeApp(firebaseConfigTesting)
console.log('DEBUGGING || DEV -> app configurada con proyecto testing')
} else if (process.env.PROD) {
// TODO: Poner config del proyecto firebase de producción.
app = firebase.initializeApp(firebaseConfigTesting)
}
const appCheck = firebase.appCheck()
const functions = firebase.app().functions('southamerica-east1')
const auth = firebase.auth()
const db = firebase.firestore()
const storage = firebase.storage()
// When running quasar dev, use Emulators.
if (process.env.DEV) {
functions.useEmulator('localhost', 5001)
auth.useEmulator('http://localhost:9099', { disableWarnings: true })
db.useEmulator('localhost', 9095)
storage.useEmulator('localhost', 9199)
self.FIREBASE_APPCHECK_DEBUG_TOKEN = true
console.log('#======= Corriendo Emuladores =======#')
}
/* App check
* Cada ambiente tiene su Key. En desarrollo, usar debugger token.
* */
if (process.env.DEBUGGING || process.env.DEV) {
// Enabling AppCheck both in local develoment (DEV) and in Testing enviroment (DEBUGGING)
appCheck.activate('----------------', true)
} else if (process.env.PROD) {
// TODO Create AppCheck in production.
}
export default boot((/* { app, router, ... } */) => {
})
export {
app,
functions,
auth,
db,
storage
}
在文档中 (app-check debug provider) 他们有一个使用名为 initializeAppCheck
的函数的示例。该功能在我的 SDK 中不可用。这是 Firebase SDK 中的内置函数,还是他们在文档中使用的实用函数?
最后,我没有收到任何错误。它工作正常,但我没有获得 AppCheck 调试令牌。
祝你有愉快的一天!
首先,initializeAppCheck()
仅适用于最新版本API,v9+。看起来您使用的是 API 的旧版本,其中所有内容都基于 firebase
命名空间(例如,firebase.appCheck()
),而在较新版本中您将导入所有函数个别地。
所以你有两个解决方案。最简单的方法是升级到 v9。 Here's a migration guide 如果您需要帮助。如果您不想更改太多代码,请尝试使用 v9 的兼容版本(在该指南中进行了描述),它允许您使用与 v8 相同的 APIs。无论您使用的是 v9 的模块化版本还是兼容版本,它都会在 App Check 初始化期间初始化调试模式,允许您像当前一样在代码中设置 self.FIREBASE_APPCHECK_DEBUG_TOKEN
。 (在兼容版本中,必须在调用 firebase.appCheck.activate()
之前设置。在模块化版本中,必须在调用 initializeAppCheck()
之前设置。)
如果您此时无法迁移到 v9,v8 App Check SDK 实际上会在导入 App Check 包时检查调试变量,而不是在 App Check 时检查调试变量已初始化 (firebase.appCheck()
)。这意味着在代码中的任何位置设置它都为时已晚。因此,当用户使用 v8 时,我们建议他们在加载主代码包之前在 index.html
页面的 <script>
标记中设置 self.FIREBASE_APPCHECK_DEBUG_TOKEN
。如果这对您的构建环境来说太难了,我建议升级到 v9。如果您使用 compat,它应该需要非常少的代码更改(只需将导入模式从 firebase/firestore
等更改为 firebase/compat/firestore
)。
我决定将 AppCheck 添加到我的项目中。我正在使用 Quasar V2 的网络应用程序中实现这一点。 Quasar 为我提供了一些环境变量,具体取决于我处于开发、生产或调试阶段(这类似于生产,但带有 --debug 标志)。
我在 Firebase 控制台有两个项目用于我正在构建的这个产品。一个对应于我的 Testing,另一个对应于 Production 环境。请注意,当在某个分支中创建新的 PR 时,我正在使用 GitHub 操作来触发对 Firebase 托管的部署。这是由 firebase-cli 生成的。
最后,我的本地 development.It 在模拟器中使用 Firebase 服务。
我的问题是我没有在我的浏览器控制台中获取 调试令牌。 这是我根据运行环境配置 Firebase 的客户端文件。
/src/boot/firebase.js
import { boot } from 'quasar/wrappers'
import firebase from 'firebase/app'
import 'firebase/app-check'
import 'firebase/functions'
import 'firebase/auth'
import 'firebase/firestore'
import 'firebase/storage'
const firebaseConfigTesting = {
apiKey: '----------------------------',
authDomain: '-----------------------',
projectId: '-------------------------',
storageBucket: '-----------------',
messagingSenderId: '------------------',
appId: '--------------------------',
measurementId: '-------------------'
}
let app = null
if (process.env.DEBUGGING || process.env.DEV) {
app = firebase.initializeApp(firebaseConfigTesting)
console.log('DEBUGGING || DEV -> app configurada con proyecto testing')
} else if (process.env.PROD) {
// TODO: Poner config del proyecto firebase de producción.
app = firebase.initializeApp(firebaseConfigTesting)
}
const appCheck = firebase.appCheck()
const functions = firebase.app().functions('southamerica-east1')
const auth = firebase.auth()
const db = firebase.firestore()
const storage = firebase.storage()
// When running quasar dev, use Emulators.
if (process.env.DEV) {
functions.useEmulator('localhost', 5001)
auth.useEmulator('http://localhost:9099', { disableWarnings: true })
db.useEmulator('localhost', 9095)
storage.useEmulator('localhost', 9199)
self.FIREBASE_APPCHECK_DEBUG_TOKEN = true
console.log('#======= Corriendo Emuladores =======#')
}
/* App check
* Cada ambiente tiene su Key. En desarrollo, usar debugger token.
* */
if (process.env.DEBUGGING || process.env.DEV) {
// Enabling AppCheck both in local develoment (DEV) and in Testing enviroment (DEBUGGING)
appCheck.activate('----------------', true)
} else if (process.env.PROD) {
// TODO Create AppCheck in production.
}
export default boot((/* { app, router, ... } */) => {
})
export {
app,
functions,
auth,
db,
storage
}
在文档中 (app-check debug provider) 他们有一个使用名为 initializeAppCheck
的函数的示例。该功能在我的 SDK 中不可用。这是 Firebase SDK 中的内置函数,还是他们在文档中使用的实用函数?
最后,我没有收到任何错误。它工作正常,但我没有获得 AppCheck 调试令牌。
祝你有愉快的一天!
首先,initializeAppCheck()
仅适用于最新版本API,v9+。看起来您使用的是 API 的旧版本,其中所有内容都基于 firebase
命名空间(例如,firebase.appCheck()
),而在较新版本中您将导入所有函数个别地。
所以你有两个解决方案。最简单的方法是升级到 v9。 Here's a migration guide 如果您需要帮助。如果您不想更改太多代码,请尝试使用 v9 的兼容版本(在该指南中进行了描述),它允许您使用与 v8 相同的 APIs。无论您使用的是 v9 的模块化版本还是兼容版本,它都会在 App Check 初始化期间初始化调试模式,允许您像当前一样在代码中设置 self.FIREBASE_APPCHECK_DEBUG_TOKEN
。 (在兼容版本中,必须在调用 firebase.appCheck.activate()
之前设置。在模块化版本中,必须在调用 initializeAppCheck()
之前设置。)
如果您此时无法迁移到 v9,v8 App Check SDK 实际上会在导入 App Check 包时检查调试变量,而不是在 App Check 时检查调试变量已初始化 (firebase.appCheck()
)。这意味着在代码中的任何位置设置它都为时已晚。因此,当用户使用 v8 时,我们建议他们在加载主代码包之前在 index.html
页面的 <script>
标记中设置 self.FIREBASE_APPCHECK_DEBUG_TOKEN
。如果这对您的构建环境来说太难了,我建议升级到 v9。如果您使用 compat,它应该需要非常少的代码更改(只需将导入模式从 firebase/firestore
等更改为 firebase/compat/firestore
)。