gpt4 book ai didi

notifications - RoR 上的 Google Calendar Watch API 方法存在问题

转载 作者:行者123 更新时间:2023-12-01 12:40:00 24 4
gpt4 key购买 nike

我在使用 Google 日历推送通知(或 web_hook)时遇到问题 - Ruby on Rails 中的 calendar.event.watch API 方法。我正在使用 gem“google-api-client”。然后在 Rails 控制台中尝试做:

require 'google/api_client'
client = Google::APIClient.new
client.authorization.access_token = "ya29.ewCcVb888OzntBusvtRcZsvfF7kOFMusnyjncR1-FJVr_oX79SgcOMbb"
data = client.execute api_method: service.events.watch, parameters: { id: "my-unique-id-0001", type: "web_hook", calendarId: "primary", address: "https://mywebsite.com/notifications"}

出现这个错误:

#<Google::APIClient::Schema::Calendar::V3::Channel:0x3ffc15ebc944 DATA:{"error"=>{"errors"=>[{"domain"=>"global", "reason"=>"required", "message"=>"entity.resource"}], "code"=>400, "message"=>"entity.resource"}}>> 

最佳答案

因为我在这上面浪费了很多时间,并且在发现问题所在后感觉很愚蠢,这里是对这个问题的正确答案,供其他人犯同样的错误。

问题是您在 execute 方法的 parameters 选项中传递了 watch 数据。此选项适用于添加到 HTTP 请求的URL 和查询参数 的参数。

然而,watch 方法只希望这些参数之一出现在查询 URL 中:calendarId(以便引用日历资源)。所有其他设置都应该作为 JSON 对象在 HTTP 请求正文中发送。

因此,原始问题代码的正确形式是

require 'google/api_client'

client = Google::APIClient.new
client.authorization.access_token = "ya29.ewCcVb888OzntBusvtRcZsvfF7kOFMusnyjncR1-FJVr_oX79SgcOMbb"

data = client.execute api_method: service.events.watch, parameters: {
calendarId: "primary",
}, body_object: {
id: "my-unique-id-0001",
type: "web_hook",
address: "https://mywebsite.com/notifications"
}

body_object 选项将传递的对象序列化为 JSON 并将其作为 HTTP 请求正文发送,这是 watch 方法所期望的。

关于notifications - RoR 上的 Google Calendar Watch API 方法存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25774909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com