Google 云 Pub/Sub 从浏览器发布 - Auth 是如何工作的?

Google Cloud Pub/Sub Publishing from Browser - How does Auth work?

我需要直接从浏览器(类似于 GA 脚本)使用 Google Cloud Pub/Sub API。我想知道如何在不需要通过后端服务器的情况下处理 Auth。

我想直接从浏览器调用云 Pub/Sub API。我试过了,它说我需要先进行身份验证,我的问题是如何保护身份验证令牌。

是否有可用的 javascript 库,我可以在浏览器(不是后端)中使用它来调用 Google Pub/Sub API。

提前致谢

Javascript 中用于授权和向 Google API 发出授权请求的一般方法显示在 https://developers.google.com/api-client-library/javascript/samples/samples#AuthorizingandMakingAuthorizedRequests -- it's not specific to the Cloud Pubsub API, but it should work for all Google APIs. Similarly, https://developers.google.com/api-client-library/javascript/start/start-js 中,用于对 Google API 的一般 Javascript 访问.

这是一个很老的话题,但我最近一直在评估是否可行。简单的答案是 - 是的,可以直接从浏览器应用程序将消息发送到 PubSub 主题。解决方法如下:

  • 您需要使用 fetch()
  • 通过 REST API post 消息
  • 您需要发送授权header
  • 授权 header 必须包含用于识别用户的 oAuth2.0 令牌;它可以是匿名身份验证用户或完全身份验证,例如使用 firebase 身份验证库。

要使以上三个都完美运行,您必须编写 很多 代码。它根本不实用,而且在建筑上也不好。除非你绝对需要那样做,而不是另一个(我不明白为什么),简化但涉及更多组件的解决方案如下:

  • 通过 firebase 验证 用户 in-browser - 可以是匿名用户或完整用户
  • 对你的cloud/firebase函数[=38]做简单的GETPOST =] 具有所需的有效载荷
  • 在函数 validate 中,传入的请求将具有经过身份验证的用户令牌
  • 如果验证良好,则发布消息进入主题

这样它仍然是安全的,更易于维护并且清楚地分为功能组件。 更少 代码,更多基础设施。