谷歌在2020年4月11日对GMail API进行了突破性的更改吗?
我们有一个ruby web应用程序,它也有一个Chrome扩展。(相当旧,ruby 2.1.0(,它使用谷歌api客户端版本0.6.4,到目前为止运行良好,但自4月11日以来,该应用程序停止了工作,所有对GMail api的调用都失败了,出现404错误。
为了提供线索,我们有一个库,我们从中调用谷歌客户端来执行操作,类似于以下内容:
def thread_metadata(id)
@metadata ||= execute(gmail_api.users.threads.get,
{
'collection' => 'public',
'userId' => 'me',
'id' => id,
'format' => 'metadata',
'metadataHeaders' => 'Subject'
}
)
然而,我们从谷歌得到的回复是404,并显示了这样的消息:
在该服务器上找不到他请求的URL/discovery/v1/apis/gmail/v1/gmail/v1/users/me/threads/16365500056684b0?collection=public&format=full
。这就是我们所知道的。
我不知道出了什么问题,除了从4月11日开始突然出现的404错误。
您需要更新google-api-client
gem,从v0.8.6起,他们更改了baseUrl的请求位置。据推测,直到最近,旧宝石仍在使用的路径没有改变。
用于生成URI的method_base
返回一些不同于0.8.6之前的内容:
irb(main):046:0> gmail_api.method_base
=> #<Addressable::URI:0x3ff4ff4e319c URI:https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest>
在0.8.6+中:
irb(main):009:0> gmail_api.method_base
=> #<Addressable::URI:0x3ff97faf4610 URI:https://www.googleapis.com/>