8

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

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

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

提前致谢

4

2 回答 2

3

Javascript 中用于授权和向 Google API 发出授权请求的一般方法显示在https://developers.google.com/api-client-library/javascript/samples/samples#AuthorizingandMakingAuthorizedRequests - 它不是特定于 Cloud Pubsub API ,但它应该适用于所有Google API。同样,https://developers.google.com/api-client-library/javascript/start/start-js用于对 Google API 的一般 Javascript 访问。

于 2015-03-18T05:02:57.113 回答
1

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

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

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

  • 通过 firebase 在浏览器中验证用户 - 可以是匿名用户或完整用户
  • 使用所需的有效负载对您的云/firebase函数执行简单的GETPOST
  • 在函数中验证将具有经过身份验证的用户令牌的传入请求
  • 如果验证良好,则将消息发布到主题中

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

于 2020-06-22T23:11:11.423 回答