当前位置: 首页 > 知识库问答 >
问题:

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

西门凯康
2023-03-14

我有一个旧项目,后端完全由Firebase处理(我没有专用服务器)。我曾经使用邮递员通过 FCM 将主题消息发送到带有标头授权的endpoint fcm.googleapis.com/fcm/sendkey=

现在它给了我< code>403错误,当我检查firebase文档时,我知道使用FCM传统HTTP API的应用程序应该考虑迁移到HTTP v1 API

我浏览了文档,它说授权密钥现在看起来像

 Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

我被如何为我的项目创建这个授权密钥所困扰,这样我就可以用它来触发使用postman或curl请求的消息

我在我的android项目中执行了以下代码

       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();
         }

这段代码给了我一个类似于< code>ya29的访问令牌。ElqKBGN2Ri_Uz...HnS_uNreA

现在我可以使用这个令牌从邮递员那里发送消息。

但我仍然很困惑,无论我为获得代币做了什么,都是正确的做法。文件上说

将您的Firebase凭据与您的首选语言的Google API客户端库结合使用,以检索一个短期OAuth 2.0访问令牌:

令牌是短暂的。如果我有服务器,每当令牌过期时,服务器代码将自动获取新令牌。由于我没有服务器,每次都需要手动生成令牌吗?令牌的日志如何有效?在我的情况下,正确的方法是什么?

提前感谢!

共有1个答案

汤承允
2023-03-14

...我是否需要每次都手动生成令牌?

是的,因为令牌过期了。

令牌在多长时间内有效?

根据我的经验,(默认)时间可能从30分钟到1小时不等。尽管如此,我还是建议不要给它设置精确的计时器。另请参阅OAuth2和Google API:访问令牌过期时间?

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

好正确的方法是设置一个专用于此任务的服务器。然而,如果你是手动操作,那么你在帖子上所做的是最简单的方法(我认为)。

 类似资料:
  • 我目前正在学习OAuth 2.0和OpenID Connect,我对授权服务器和访问令牌有疑问。规范将授权服务器定义为: 服务器在成功验证资源所有者并获得授权后向客户端发放访问令牌。 因此,据我所知,客户端将用户重定向到授权服务器,用户在授权服务器上进行身份验证,授权服务器向客户端发出访问令牌。 现在有一件事发生了,直到现在我才明白。有两种可能的方法来理解这一点,我正在努力找到正确的方法: > 授

  • 我正在使用Spring Security和Oauth 2.0身份验证协议保护REST服务。 我已经实现了一个MVC Spring应用程序,并且运行良好。客户端通过提供客户端凭证(client_id)向服务器请求AccessToken 如果凭据有效,客户端将获得访问令牌作为响应,如下所示: 我希望得到一个包含如下用户详细信息的响应: 有谁知道实现这种方法的方法? 我一直在谷歌上搜索很多,但我还没有找

  • 2.Github使用代码https://reduxapp.herokuapp.com/auth/callback?code=9536286A59228E7784A1重定向回来,并触发githubSendCode('9536286A59228E7784A1')操作 你可以在网络呼叫选项中看到呼叫是通过的,但POST呼叫从来没有发生过。然后出现控制台错误: 下面是我的操作函数:

  • 本文向大家介绍oauth 刷新访问令牌,包括了oauth 刷新访问令牌的使用技巧和注意事项,需要的朋友参考一下 示例 资源

  • 获取访问令牌的文档中的第一步是“将用户引导到我们的授权URL”。那到底是什么意思?没有提供链接或任何东西。它还说“公司名称、联系电子邮件和隐私政策URL是开始提交的必要条件。”我们的应用程序没有隐私政策...只是一个简单的标签提要。我不明白为什么有一个简单的标签提要那么复杂。 是否有一个等待时间来获得批准的应用程序..如果它得到批准...在获得访问令牌之前,我必须获得批准吗?这在任何地方都没有概述

  • 问题内容: 尝试在SafariViewController中使用Facebook OAuth。首先,我使用SafariViewController打开authURL,如果用户在Safari上登录Facebook,它将重定向它们并返回带有该特定服务令牌的OAuth URL,例如Instagram 响应:https : //www.facebook.com/connect/login_success.