我正在尝试设置我的移动应用程序,以便当用户收到 FCM 消息时,当他们单击该消息时,我可以使用消息中的数据将其路由到适当的屏幕。
我的 FCM 消息如下所示:
const fcmMessage = {
notification: {
title: title,
body: message
},
data:{
type:'Chat',
Name: 'Mike',
body:'test'
},
android: {
notification: {
title:title,
body: message,
channel_id:'high_importance_channel'
}
},
token: msgToken,
};
Run Code Online (Sandbox Code Playgroud)
然后在我的 main() 方法中,我按照下面的代码片段初始化 Flutter_Local_notifications。
问题是当我点击通知时,有效负载始终是空字符串?这些是执行此操作的代码行。为什么NotificationResponse.payload是空字符串?最终,我需要访问 FCM 消息中的“数据”对象。
void onDidReceiveNotificationResponse(NotificationResponse notificationResponse) async {
print(notificationResponse.payload);
}
Run Code Online (Sandbox Code Playgroud)
这是完整的 main() 方法。
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// Set the background messaging handler early on, as a named top-level function
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
if (!kIsWeb) {
channel = const …Run Code Online (Sandbox Code Playgroud) 我正在为我的网络/移动应用程序使用 firebase,现在我也想使用一个后端 API。API 需要 JWT 令牌来验证请求并进行设置,我需要指定用于加密/解密令牌的 JWT Secret。
在 firebase 中,我相信我使用 const token = wait firebase.auth().currentUser.getIdToken(); 检索令牌 这就是我传递给 API 的内容。
但是,我还没有弄清楚在哪里可以配置 JWT-secret?我已经尝试了 firebase 控制台中显示的 API 密钥,我还尝试了在我的控制台https://console.developers.google.com上找到的服务器/客户端密钥。
但是,无论如何,当我尝试向 API 调用发出请求时,我都会收到 JWSInvalidSignature。
有人让这个工作吗?我在哪里可以从 firebase 获取 JWT 秘密以在 API 后端进行配置?提前致谢。
详细信息如下: 1. 我正在使用名为 postGrest 的服务,它会在 postgres DB 之上自动创建一个 Web API。为了对请求进行身份验证,您可以通过指定名为“角色”的自定义声明来配置服务,并且还需要指定 JWT 秘密,以便它可以解码令牌。
这是我对 API 的简单调用:
const fetchdata = async () => {
const token = await firebase.auth().currentUser.getIdToken();
let axiosConfig = {
headers: {
'Authorization': 'Bearer' + token
}
}
const data …Run Code Online (Sandbox Code Playgroud) 我正在努力实现一个使用 Firebase 身份验证和 Google-Sign 的 Flutter 应用程序。我已经成功地让 firebaseauth 正常登录/注销,没有问题。根据 authstate 更改,我定向到主页或登录页面。然后我实现了 Google Sign-in,它会自动将用户登录到 firebase。
这有效,我获得了提示等必要的权限。但是当我点击注销时,应用程序不会重定向到登录屏幕。我正在调用 await firebaseAuth.instance.Signout() ......我相信它确实删除了用户......但它不会重定向。然后,当我再次尝试登录时,没有任何反应。
我尝试了许多不同的登录变体。我似乎无法弄清楚为什么它不会在注销时重定向。
这是我登录 Google 和 firebase 的登录逻辑:
try {
final GoogleSignInAccount googleSignInAccount =
await _googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication =
await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleSignInAuthentication.accessToken,
idToken: googleSignInAuthentication.idToken,
);
final FirebaseUser user = await _firebaseAuth.signInWithCredential(credential);
assert(!user.isAnonymous);
assert(await user.getIdToken() != null);
final FirebaseUser currentUser = await _firebaseAuth.currentUser();
assert(user.uid == currentUser.uid);
} catch (error) {
print(error);
}
notifyListeners();
}
Run Code Online (Sandbox Code Playgroud)
这是我在 main.dart 中重定向到适当页面的逻辑:
home: …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用 Firebase 身份验证进行用户身份验证的应用程序。
作为解决方案的一部分,我还使用 Google Cloud Run 来运行一些 Web 引擎。我知道我可以通过 Google IAM 用户帐户/角色限制对给定云运行实例的访问。
我的问题是,我可以为特定的 Firebase 用户配置对给定 Cloud Run 实例的访问权限吗?我可以动态创建一个组,然后将 Firebase 用户的子集分配给该组,然后该组就可以访问 cloud run 服务吗?
如果是这样,您可以提供关于我如何做到这一点的任何信息吗?
谢谢
firebase google-cloud-platform firebase-authentication google-iam google-cloud-run
我正在尝试使用React Emotion设置一条水平线,中间有文本。它看起来像这样:
----------------------SOME TEXT----------------------------------
我在 StackOverflow 上找到了有关如何使用 CSS 执行此操作的示例,但它对我不起作用。
这是我正在使用的 DIV,但它不起作用。
这可以用反应情感来设置吗?我缺少什么?
<div
css={{
display: 'flex',
lineHeight:'1em',
color:'gray',
'&:before, &:after': {
content:'',
display:'inline-block',
flexGrow:'1px',
marginTop:'0.5em',
backgroundColor:'gray',
height:'1px',
marginRight:'10px',
marginLeft:'10px'
}
}}
>
SOME TEXT
</div>
Run Code Online (Sandbox Code Playgroud) 我正在使用 firebase 模拟器在我的计算机上托管一些 GCF 功能。它们被配置为在 localhost:5001 上运行/托管。这很好用。
我现在在我的应用程序中使用 Google Tasks,并且我的任务需要调用 GCF 函数。任务不在本地运行,因此我将我的计算机设置为通过公共 IP 地址访问,并打开端口 5001 以允许该端口上的流量进入。这个想法是Google任务可以调用我机器上的函数,这样我就可以正确测试。
我似乎无法让模拟器与任何外部公共 IP 地址一起工作。这是不可能的吗?如果可以,我该如何配置?
已更新,这里没有太多代码可供查看...我只是想知道您是否可以将模拟器配置为侦听公共端口。这是默认的 firebase.json 文件
{
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
],
"source": "functions"
},
"emulators": {
"functions": {
"port": 5001
},
"pubsub": {
"port": 8085
},
"ui": {
"enabled": true
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的研究中,我发现你可以添加“host”属性来允许你的本地网络使用“host”:“0.0.0.0”访问模拟器,所以它看起来像这样:这可以允许通过我的本地IP进行访问,例如http://192.168.1.216:5001
{
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
],
"source": "functions"
},
"emulators": {
"functions": {
"port": 5001,
"host": "0.0.0.0"
}, …Run Code Online (Sandbox Code Playgroud) 我有一个 Node.JS 应用程序,已部署到 Google CloudRun。配置 CloudRun 时,您可以选择它将使用多少个核心。由于 Node.JS 是单线程的,因此在 CloudRun 实例中指定超过 1 个核心是否有任何优势?它会使用第二个核心吗?
如果不是,将 Node.JS 部署到 CloudRun 的最佳实践是否始终使用一个核心,然后让 CloudRun 根据请求计数扩展实例数量?
我正在尝试让基本的 RangeSlider 与显示标签开始结束范围的标签一起使用。下面是您可以做的最简化的...包含滑块的容器。由于某种原因,标签没有出现?我看过其他示例,这应该是微不足道的,但无法弄清楚为什么它不显示标签?这可能是一个错误吗?
class _TestScreenState extends State<TestScreen> {
RangeValues _values = RangeValues(15, 30);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Testing formatting'),
),
body: Container(
child: RangeSlider(
values: _values,
min:1,
max: 60,
labels: RangeLabels('${_values.start.round()}', '${_values.end.round()}'),
onChanged: (RangeValues values) {
setState(() {
_values = values;
});
},
),
),
drawer: SideDrawer(),
);
Run Code Online (Sandbox Code Playgroud)
}
更新:弄清楚了,不确定是否是默认的,但我需要指定一个 SliderTheme,然后在 sliderTheme 内,提供 SlideThemeData 并将 showvalueindicator 设置为 showvalueIndactor.always。然后它开始出现。
这是我的场景。我已经设置了一个在 Google SQL 云中运行的 Postgres DB 实例。它已启动并正在运行,如果我将本地 IP 列入白名单,我可以毫无问题地直接连接。
然后我部署了一个 docker 容器 (postGrest),它是一个连接到 postgres 数据库的 Web 服务器。当我在 Google Cloud Run 上配置它时,它确实有一个下拉选项,我可以在其中指定数据库连接,它说,在幕后,它为此连接配置 Cloud SQL 代理。
容器允许传入环境变量以指定哪个服务器等。一个必需的参数是 postgred 实例的 DB_URI。在本地运行时,它看起来像这样:
postgres://authenticator:mysecretpassword@localhost:5432/testdb
当我尝试在云版本上配置它时,我尝试使用 IP 127.0.0.1(谷歌云 SQL 代理文档说这是通过代理连接的方式)。这没有用。
然后我尝试使用分配给 postgres 数据库的公共 IP ......这也不起作用。
有谁知道如何使用这种 DB_URI 格式指定正确的连接字符串?
postgresql google-cloud-sql google-cloud-platform postgrest google-cloud-run
我有以下查询
select json_agg(t) from (
select json_build_object(
'field_1',a.field_1,
'field_2',a.field_2,
'field_4',json_agg(json_build_object('id',g.id,'data',g.fullname)),
'field_9',json_agg(json_build_object('id',i.optionid,'data',i.option))
) as data
from schema_1.tbl_342 a
left join schema_1.tbl_342_to_tbl_329_field_10 b on a.id=b.tbl_342_id
left join schema_1.tbl_329_customid c on b.tbl_329_id=c.id
left join schema_1.tbl_329_field_23_join d on c.id=d.id
left join schema_1.tbl_329_field_23 e on d.optionid = e.optionid
left join schema_1.tbl_342_to_tbl_312_field_4 f on a.id=f.tbl_342_id
left join schema_1.tbl_312_customid g on f.tbl_312_id = g.id
left join schema_1.tbl_342_field_9_join h on h.id=a.id
left join schema_1.tbl_342_field_9 i on i.optionid=h.optionid
group by a.field_1,a.field_2
) t
Run Code Online (Sandbox Code Playgroud)
这会产生以下JSON格式
[
{
"data":{ …Run Code Online (Sandbox Code Playgroud) 我有一个react-native应用程序,当我从react-native run-ios运行它时以及当我从Xcode运行它时,只要我的目标是模拟器,它就会成功构建。
但是,当我将目标设备更改为连接的 Iphone 时,Xcode 失败并出现一般错误
“clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)”
以模拟器为目标时构建良好,但如果以真实设备为目标则失败?
关于可能出现的错误或调试的一般方向有什么想法吗?
我在尝试在 Flutter 应用程序中使用 Google Sign-in 登录 Firebase 时遇到问题。
我看过另外两篇关于此问题的帖子,但没有答案可以为我自己解决这个问题。我在 flutter 中使用 Google Sign-in 提供程序,google_sign_in: ^5.1.0,Flutter 版本 2.2.1
我已按照有关生成/添加 Sha-1、Sha-256 密钥到我的 firebase 项目的说明进行操作。在此之前,我遇到了 API 异常。我添加了密钥,将最新的 google-json 文件下载到我的 android 文件夹中,并克服了该错误。现在,当我单击“登录”时,我会看到帐户选择屏幕。
我选择了我的帐户,然后我点击了一个带有无尽旋转的白色页面。
这是我正在运行的登录代码。
GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: <String>[
'email',
'https://www.googleapis.com/auth/contacts.readonly',
],
);
Future<void> _handleGoogleSignIn() async {
try {
GoogleSignInAccount? googleSignInAccount =
await _googleSignIn.signIn();
GoogleSignInAuthentication? googleSignInAuthentication =
await googleSignInAccount?.authentication;
final AuthCredential credential = GoogleAuthProvider.credential(
accessToken: googleSignInAuthentication?.accessToken,
idToken: googleSignInAuthentication?.idToken,
);
final UserCredential user = await _auth.signInWithCredential(credential);
} catch (error) {
print('in error block');
print(error); …Run Code Online (Sandbox Code Playgroud) flutter ×5
firebase ×3
dart ×2
postgresql ×2
emotion ×1
google-iam ×1
ios ×1
json ×1
jwt ×1
postgrest ×1
rangeslider ×1
react-native ×1
reactjs ×1
xcode10.2 ×1