控制器 Firebase 应用程序检查插件
非官方电容插件 Firebase 应用程序检查[^1]
使用大小写
Firebase App Check 插件通常用于验证对后端的请求来自您真实的应用程序,例如:
- 保护消防基地资源: 确保只有您的真应用程序才能通过Play Guide, App Attest, 或 reCAPTCHA v3 的证明请求, 获取像 Cloud Firestore 或 Cloud 函数等服务.
- 保护自定义后端: 获取 App 检查符
getToken(...)并随请求一起发送到您的后端用于服务器侧验证. - 自动刷新令牌: 保留应用程序 检查最新的符号
setTokenAutoRefreshEnabled(...)并通过tokenChanged听着. - 地方发展: 使用调试提供者在模拟器等未经验证的设备上测试您的应用程序.
兼容性
| 插件版本 | 电容版本 | 状态 |
|---|---|---|
| 8.x.x (英语) | >=8.x.x | 积极支持 |
| 7.x.x (中文(简体) ) | 7.x.x (中文(简体) ) | 折旧 |
| 6.x.x (中文(简体) ) | 6.x.x (中文(简体) ) | 折旧 |
| 5.x.x (中文(简体) ) | 5.x.x (中文(简体) ) | 折旧 |
指南
- Firebase App 控制器 App 检查: 设置 Play Guide, App Attest, 和 reCAPTCHA 供应商, 并用此插件校验令牌服务器侧.
- 如何在电容App中使用火把:对"火地"服务App Check的巡演,一旦执行完毕就结束了保护.
安装
你可以用我们的 AI 辅助设置 以安装插件. 添加数据 超级技能 至您的 AI 工具,使用以下命令:
npx skills add capawesome-team/skills --skill capacitor-plugins
然后使用下列提示:
Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capacitor-firebase/app-check` plugin in my project.
如果你喜欢 手动设置,通过运行以下命令来安装插件,并遵循下面的平台特定指令:
npm install @capacitor-firebase/app-check firebase
npx cap sync
如果您还没有将 Firebase 添加到您的项目中(机器人 编号 : iOS系统 编号 : 网页) (中文(简体) ).
机器人
见 设置您的防火基地项目 并遵守指示 正确设置您的应用程序.
变量
如果需要, 您可以在您的应用程序中定义以下工程变量 variables.gradle 要更改依赖的默认版本的文件 :
$firebaseAppCheckPlayIntegrityVersion版本com.google.firebase:firebase-appcheck-playintegrity(默认 :19.0.1(中文(简体) )$firebaseAppCheckDebugVersion版本com.google.firebase:firebase-appcheck-debug(默认 :19.0.1(中文(简体) )
如果您在工程中遇到其它插件的依赖性冲突, 这会有所帮助 .
iOS系统
打开 iOS 14及以后,参见 设置您的防火基地项目 并遵守指示 正确设置您的应用程序.
打开 iOS 13,参见 设置您的防火基地项目 并遵守指示 正确设置您的应用程序.
确保上传到Firebase的私钥(*.p8) DeviceCheck 选择为服务.
Swift 软件包管理器
在您的 capacitor.config.json (或 capacitor.config.ts) 避免 SwiftPM 软件包识别相撞数字 :
{
"experimental": {
"ios": {
"spm": {
"packageOptions": {
"@capacitor-firebase/app-check": {
"symlink": true
}
}
}
}
}
}
请注意目标 packageOptions 支持需要控制器 CLI 8.4.0+ (中文(简体) )。 。 。 .
网页
见 设置您的防火基地项目 并遵守指示 正确设置您的应用程序.
配置
此插件不需要配置 .
火基地 JavaScript SDK
给 您可以找到如何使用 Firebase JS SDK 插件的信息.
演示
这里有一个实例: robingenz/电容器-火力基地-插座-demo
使用量
以下实例显示如何初始化 App Check, 获取当前符号, 启用自动符号刷新, 并聆听符号更改 .
初始化 App 检查
激活应用程序检查您的应用程序 。 每个应用程序只能调用一次。 在网络上,通过一个提供者,例如 ReCaptchaV3Provider在Android和iOS上,使用本地证明提供者:
import { FirebaseAppCheck } from '@capacitor-firebase/app-check';
import { ReCaptchaV3Provider } from '@capacitor-firebase/app-check';
import { Capacitor } from '@capacitor/core';
const initialize = async () => {
await FirebaseAppCheck.initialize({
provider: Capacitor.getPlatform() === 'web' ? new ReCaptchaV3Provider('myKey') : undefined,
});
};
获取当前 App 检查令牌
获取当前 AppCheck 令牌, 例如将其发送到您的后端 。 设定 forceRefresh 改为 true 如果您总是想要取出一个新的符号而不是缓存的符号:
import { FirebaseAppCheck } from '@capacitor-firebase/app-check';
const getToken = async () => {
const { token } = await FirebaseAppCheck.getToken({
forceRefresh: false,
});
return token;
};
启用自动令牌刷新
设定是否根据需要自动刷新 App Check 令牌 :
import { FirebaseAppCheck } from '@capacitor-firebase/app-check';
const setTokenAutoRefreshEnabled = async () => {
await FirebaseAppCheck.setTokenAutoRefreshEnabled({ enabled: true });
};
听值更改
当 App 检查令牌更改时得到通知 :
import { FirebaseAppCheck } from '@capacitor-firebase/app-check';
const addTokenChangedListener = async () => {
await FirebaseAppCheck.addListener('tokenChanged', event => {
console.log('tokenChanged', { event });
});
};
删除所有听众
删除此插件的所有听众 。 仅在网上提供 :
import { FirebaseAppCheck } from '@capacitor-firebase/app-check';
const removeAllListeners = async () => {
await FirebaseAppCheck.removeAllListeners();
};
API 密码
getToken(...)initialize(...)setTokenAutoRefreshEnabled(...)addListener('tokenChanged', ...)removeAllListeners()- 接口
- 类型异名
获取托肯(...)
getToken(options?: GetTokenOptions | undefined) => Promise<GetTokenResult>
获取当前 App Check 令牌 .
| 参数 | 类型 |
|---|---|
options | GetTokenOptions |
回返情况: Promise<GetTokenResult>
自: 1.3.0 (单位:千美元)
初始化(...)
initialize(options?: InitializeOptions | undefined) => Promise<void>
激活给定应用程序的 App 检查 . 每个应用程序只能呼叫一次.
| 参数 | 类型 |
|---|---|
options | InitializeOptions |
自: 1.3.0 (单位:千美元)
设置 Token 自动重新启用(...)
setTokenAutoRefreshEnabled(options: SetTokenAutoRefreshEnabledOptions) => Promise<void>
设定是否自动刷新 App Check 令牌 .
| 参数 | 类型 |
|---|---|
options | SetTokenAutoRefreshEnabledOptions |
自: 1.3.0 (单位:千美元)
添加倾听器( “ token Changed' ,...)
addListener(eventName: 'tokenChanged', listenerFunc: TokenChangedListener) => Promise<PluginListenerHandle>
当 App Check 令牌更改时调用 .
| 参数 | 类型 |
|---|---|
eventName | 'tokenChanged' |
listenerFunc | TokenChangedListener |
回返情况: Promise<PluginListenerHandle>
自: 1.3.0 (单位:千美元)
删除所有收听器( )
removeAllListeners() => Promise<void>
删除此插件的所有听众 .
仅供Web使用.
自: 1.3.0 (单位:千美元)
接口
获取托肯结果
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
token | string | 以 JWT 为格式的 App Check 令牌 . | 1.3.0 (单位:千美元) |
expireTimeMillis | number | 自纪元后,该标志将在毫秒后过期。 仅供Android和iOS使用. | 1.3.0 (单位:千美元) |
获取托肯选项
| Prop | 类型 | 说明 | 默认 | 自兹 |
|---|---|---|---|---|
forceRefresh | boolean | 若为 true,将总是试图取出新的标志。 若为 false,如果在存储中找到,将使用缓存的令牌. | false | 1.3.0 (单位:千美元) |
初始化选项
| Prop | 类型 | 说明 | 默认 | 自兹 |
|---|---|---|---|---|
debug | boolean | 若为 true,则使用调试提供者。 ⚠️ 请注意:调试提供者允许从未经验证的设备访问您的 Firebase 资源 。 在您的应用软件的生产建设中不要使用调试提供者,也不要与不信任的方分享你的调试建筑. ⚠️ 折旧: 使用 debugToken 换句话说 此选项将在下一个主要版本被删除 。 更多信息: https://firebase.google.com/docs/app-check/web/debug-professor 页面存档备份,存于互联网档案馆 | false | 1.3.0 (单位:千美元) |
debugToken | string | boolean | 若为 true,则使用调试提供者。 打开 网页,您也可以设置一个预定义的调试符字符串,而不是 true。在Android和iOS上,您必须为此使用环境变量。 ⚠️ 请注意:调试提供者允许从未经验证的设备访问您的 Firebase 资源 。 在您的应用软件的生产建设中不要使用调试提供者,也不要与不信任的方分享你的调试建筑. | false | 7.1.0 (中文(简体) ) |
isTokenAutoRefreshEnabled | boolean | 若为 true, SDK 自动刷新 App Check 令牌 . | false | 1.3.0 (单位:千美元) |
provider | any | 用于 App Check 的提供者 。 一定是这样 ReCaptchaV3Provider, (中文(简体) ), ReCaptchaEnterpriseProvider,或 CustomProvider。仅可用于Web. | ReCaptchaV3Provider | 7.1.0 (中文(简体) ) |
siteKey | string | ReCAPTCHA v3站点密钥(公钥). 此选项在 provider 已经设定。 仅供Web使用. | 1.3.0 (单位:千美元) |
设置托肯自动重新启用选项
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
enabled | boolean | 若为 true, SDK 自动刷新 App Check 令牌 。 此选项覆盖初始化时设置的任何值 AppCheck () . | 1.3.0 (单位:千美元) |
插件听筒
| Prop | 类型 |
|---|---|
remove | () => Promise<void> |
Token 变换事件
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
token | string | 以 JWT 为格式的 App Check 令牌 . | 1.3.0 (单位:千美元) |
类型异名
已更改 听众
召回以接收符号更改事件 .
(event: TokenChangedEvent): void
测试
机器人
遵循这些步骤来测试您在真实设备上的执行情况 :
- 启动Android设备的应用程序.
- 运行以下命令从机器人日志中获取您的临时秘密 :
adb logcat | grep DebugAppCheckProvider
输出应该是这样的:
D DebugAppCheckProvider: Enter this debug secret into the allow list in
the Firebase Console for your project: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- 接下来,打开 App 检查工程 在 Firebase 控制台中从您的应用程序的外溢菜单中选择管理调试符 。 然后,从输出中注册调试密钥 .
财务问题
此插件使用哪些验证提供者 ?
在Android上,插件使用 播放完整性 供养. 在iOS上,它使用 应用测试 关于iOS 14, 稍后 设备检查 iOS 13号机 在网络上,它使用 reCAPTCHA v3 (英语) 默认,但您也可以通过 ReCaptchaEnterpriseProvider 或者说 CustomProvider 实例 provider 选项.
我怎么能测试App检查器和其他未经验证的装置?
通过设置调试提供者 debugToken 选项 initialize(...) 方法。 在Android上,你可以从设备日志中抓取临时调试密钥并将其注册到Firebase Console(参见 测试) (中文(简体) ). 在您的应用程序生产构建中不要使用调试提供者, 也不要与未信任的方共享您的调试构建, 因为它允许从未验证的设备获取您的 Firebase 资源 .
我怎么用AppCheck保护自己的后端?
打电话 getToken(...) 以 JWT 格式检索当前 App Check 令牌并连同请求一起发送到您的后端的方法, 您可以在此验证其服务器侧。 使用 tokenChanged 听者可以在符号更改时得到通知.
为什么我的 App Check 令牌没有自动刷新?
自动令牌刷新默认已禁用 。 你可以启动它与 isTokenAutoRefreshEnabled 选项 initialize(...) 方法或任何时候 setTokenAutoRefreshEnabled(...) 方法.
我能用这个插件吗? 有Ionic、React、Vue或Angular?
是的,插件是框架不可知的。 它在任意网络框架的Capacitor app中工作,包括有Angular,React,或Vue的Ionic,以及平版JavaScript等项目.
相关插件
- Firebase 验证: Firebase 认证的非官方电容插件.
- 火地云炉:Firebase Cloud Firestore的非官方电容插件.
- 火基地云函数:Firebase云函数的非官方电容插件.
- 火地云存储:Firebase云存储的非官方电容插件.
通讯
随时更新有关卡帕韦索姆、Capacitor和Ionic生态系统的最新消息和最新消息,因为我们 《卡帕索克通讯》。 。 。 .
更改日志
见 变动情况。 。 。 .
许可证
见 自由主义。 。 。 .
[^1]: 这个项目不附属于Google LLC或其任何子公司或子公司,也不获得其认可、支持、赞助或批准.