【问题标题】:Locally testing Google API Client watch events本地测试 Google API 客户端观看事件
【发布时间】:2023-03-23 10:29:01
【问题描述】:

我正在使用 google api ruby client 向日历添加 webhook,但我遇到了 Google::Apis::ClientError: pushWebhookBadDomain

我已经设置了一个 ngrok 实例并在网站管理员工具上对其进行了验证,以便我可以将其作为允许的域添加到处理所有日历身份验证等的项目中。我找不到对该特定错误的任何引用所以我想知道使用 ngrok 是否有什么时髦之处,以及是否有更好的方法可以在本地测试 webhook。

这是电话(为清楚起见而精简)以防我做任何愚蠢的事情:

require 'google/apis/calendar_v3'
client = Google::Apis::CalendarV3::CalendarService.new
authorization = Signet::OAuth2::Client.new(
  :authorization_uri =>
    'https://accounts.google.com/o/oauth2/auth',
  :token_credential_uri =>
    'https://accounts.google.com/o/oauth2/token'
)
authorization.client_id = ENV['GOOGLE_CLIENT_ID']
authorization.client_secret = ENV['GOOGLE_CLIENT_SECRET']
authorization.grant_type = 'refresh_token'
authorization.refresh_token = refresh_token
authorization.fetch_access_token!
client.authorization = authorization

channel = Google::Apis::CalendarV3::Channel.new(address: success_callback_url, id: channel_id, type: "web_hook")
binding.pry
webhook = client.watch_event('primary', channel, single_events: true, time_min: Time.now.iso8601)

【问题讨论】:

  • 您是否按照这里提到的所有步骤developers.google.com/google-apps/calendar/v3/push?hl=en 。您的 webhook 回调 URL 是 HTTPS 还是 HTTP?你也可以在推送通知操场上测试pushnotificationsplayground.appspot.com
  • 是的,所有这些都遵循了,这些游乐场网站的主要问题是它没有使用我的应用程序,而且我遇到的问题与允许的网站和其他应用程序有关-具体属性我没有得到有用的信息。
  • 我的主要好奇心是,如果这一切都归结为 ngrok 的 ssl 证书不好(谷歌认为),以及其他人是否有更好的方法在本地进行设置

标签: ruby-on-rails google-calendar-api google-api-client google-api-ruby-client


【解决方案1】:

当您在 Google Cloud Console 中将域注册为 AppEngine 项目的允许域时,您不应在域名前包含 https://。您需要将其注册为 xxxxxxx.ngrok.io。

我遇到了和你一样的问题,在添加允许的域时删除 https:// 后,我可以在本地机器上接收使用 ngrok 转发的推送通知。

如果这对你有帮助,请告诉我。

兄弟, 伊森

【讨论】:

  • 天哪,非常感谢你成功了!没有想到这一点,我觉得自己像个傻瓜。
  • 为了弄清楚这一点,我花了 4 个小时绞尽脑汁。 App Engine Push 设置屏幕中的文档/提示可能会更准确以提供帮助。或者,我们可能是唯一两个不够特别但还没弄清楚的人;)
  • @EthanS 请告诉我您是如何设法在 Google Cloud Console 中验证您的 xxxx.ngrok.io 域的?
  • 嗨@astronaut ....你困在哪里?如果没有详细信息,我将不得不假设您单击了“凭据”中“域验证”选项卡中的“添加域”按钮。这对我不起作用。相反,我通过 google.com/webmasters/verification/home?hl=en 添加了我的 ngrok 域
  • @EthanS 是的,这就是我遇到问题的地方。您不能只在其中添加域,您必须以非直观的方式对其进行验证。你是怎么做到的?
猜你喜欢
  • 2020-10-08
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
相关资源
最近更新 更多