我有一个 java spring boot 后端应用程序,我正在尝试将其连接到 Firebase Cloud Messages。我有一个使用 firebase 的 Android 应用程序,我正在尝试使用这个后端来推送通知。
我已经从 firebase 控制台项目设置生成了私钥,放置了 json 文件 - 以下内容在本地完美运行:
try {
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(new ClassPathResource("PATH_TO_GENERATED_JSON").
getInputStream())).build();
if (FirebaseApp.getApps().isEmpty()) {
FirebaseApp.initializeApp(options);
logger.info("Firebase application has been initialized");
}
} catch (IOException e) {
logger.error(e.getMessage());
}
...
response = FirebaseMessaging.getInstance().send(message);
Run Code Online (Sandbox Code Playgroud)
我已经将 google cloud build 设置为自动触发并从 github 构建。但我无法提交 json 凭证文件(对吗?),因此对于云部署,我已将初始化部分更改为:
if (FirebaseApp.getApps().isEmpty()) {
FirebaseApp.initializeApp();
logger.info("Firebase application has been initialized");
}
Run Code Online (Sandbox Code Playgroud)
但我收到了有关未设置项目 id 的错误信息,因此我还使用以下命令编辑了云构建触发器内联 YAML:
--update-env-vars=GOOGLE_CLOUD_PROJECT=XXXXXXXXXXX
但现在我在尝试发送消息时收到以下错误:
com.google.firebase.messaging.FirebaseMessagingException: Permission 'cloudmessaging.messages.create' denied on …
javascript firebase google-cloud-platform firebase-cloud-messaging google-cloud-build
为了将HTTP V1 API(而不是旧版 API)与 PHP 一起使用,必须使用 REST 接口。
https://firebase.google.com/docs/cloud-messaging/send-message#top_of_page
我想知道如何获取 Auth 2.0 访问令牌?
https://firebase.google.com/docs/cloud-messaging/auth-server
由于 PHP 没有Google API Client Library(请参阅上面链接中的示例),如何通过 REST 调用接收 Auth 2.0 令牌(无需显示 PHP 代码)?
相关问题:一旦收到这个短暂的令牌,如何刷新这个令牌?工作流程是怎样的?
多谢!
我可以使用下面的 CURL 请求使用 Firebase Messaging 发送通知。我当前正在使用 OAuth 2.0 Playground 来获取访问令牌。我需要实现一个 PHP 脚本来执行此操作。如何在 PHP 中以编程方式生成访问令牌?
curl -X POST -k -H 'Authorization: Bearer access_token_goes_here' -H 'Content-Type: application/json' -i 'https://fcm.googleapis.com/v1/projects/projectId/messages:send' --data '{
"message":{
"topic" : "newTopic",
"notification" : {
"body" : "This is a Firebase Cloud Messaging Topic Message!",
"title" : "FCM Message"
}
}
}
Run Code Online (Sandbox Code Playgroud)