我有一个旧项目,后端完全由Firebase处理(我没有专用服务器(。我曾经使用邮递员通过 FCM 将主题消息发送到带有标头Authorization : key=<myKey>
的端点fcm.googleapis.com/fcm/send
现在它给了我403
错误,当我检查Firebase文档时,我知道使用FCM旧版HTTP API的应用应该考虑迁移到HTTP v1 API
我浏览了文档,它说授权密钥现在看起来像
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
我陷入了如何为我的项目创建此授权密钥的困境,以便我可以使用它来使用邮递员或 curl 请求触发消息
我在我的安卓项目中执行了以下代码
private void getAccessToken() {
String[] SCOPES = {"https://www.googleapis.com/auth/firebase.messaging"};
GoogleCredential googleCredential = null;
googleCredential = GoogleCredential
.fromStream(streamFromAsset("service-account.json"))
.createScoped(Arrays.asList(SCOPES));
googleCredential.refreshToken();
return googleCredential.getAccessToken();
}
这段代码给了我一个类似于ya29.ElqKBGN2Ri_Uz...HnS_uNreA
的访问令牌
现在我可以使用此令牌从邮递员发送消息。
但我仍然感到困惑,无论我为获得令牌所做的一切都是正确的方法。文件说
将您的 Firebase 凭据与首选语言的 Google API 客户端库结合使用,以检索有效期较短的 OAuth 2.0 访问令牌:
令牌是短暂的。如果我有服务器,则每当令牌过期时,服务器代码都会自动获取新令牌。由于我没有服务器,是否需要每次都手动生成令牌?对于令牌的日志如何有效? 在我的情况下,正确的方法是什么?
提前感谢!
...我是否需要每次都手动生成令牌?
是的,因为令牌已过期。
对于令牌的日志如何有效?
根据我的经验,(默认(时间可能从 30 分钟到 1 小时不等。尽管如此,我建议不要在上面设置一个确切的计时器。另请参阅 OAuth2 和 Google API:访问令牌过期时间?
在我的情况下,正确的方法是什么?
井。正确的方法是设置专用于此任务的服务器。但是,如果您手动执行此操作,那么您在帖子上所做的是最简单的方法(我认为(可以正常工作。