如何获取 FCM v1 的 Oauth 访问令牌?没有服务器



我有一个旧项目,后端完全由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:访问令牌过期时间?

在我的情况下,正确的方法是什么?

井。正确的方法是设置专用于此任务的服务器。但是,如果您手动执行此操作,那么您在帖子上所做的是最简单的方法(我认为(可以正常工作。

相关内容

  • 没有找到相关文章

最新更新