我一直在使用2个REST API调用来批量上传google离线点击转换。生成访问令牌。另一个是API调用上传离线点击转换。
几周来一切都很好,直到我们在尝试生成访问令牌时突然开始在JSON中获得invalid_grant
消息。不知道为什么——我们也没有收到谷歌关于这件事的电子邮件或任何东西。它刚刚停止工作,invalid_grant错误很神秘,在线帮助也没有解释太多。
我通过以下视频解决了这个问题,在Google oAuth Playground:中生成了一个新的刷新令牌
https://youtu.be/KFICa7Ngzng
所以,我的问题是——我们能以某种方式实现自动化吗?我可以捕获invalid_grant JSON响应,然后想做一些系列的REST API调用来生成新的刷新令牌。或者,我需要在oAuth上从Web应用程序类型切换到服务帐户类型吗?
我还研究了可能导致刷新令牌过期的原因。我看了下一页,没有一个项目适用于我的情况:
https://developers.google.com/identity/protocols/oauth2#expiration
答案是这在代码中是不可能的。可以使用服务帐户。然而,服务帐户的问题是,谷歌表示,由于设置困难和安全风险,这不是推荐的途径。谷歌支持无法真正为我确定为什么我的oAuth刷新令牌坏了。我必须切换到付费支持来解决这个问题,但我没有这样做。我想这是因为Refresh Token非常旧——大约有2年的历史了。然而,我在我的访问令牌API调用中添加了代码来查找invalid_grant。当我下次收到它时,我对它进行了编码,这样它就会向我发送一封电子邮件,这样我就可以重新设置客户端密钥,然后再次通过oAuth同意屏幕生成下一个刷新令牌。我预计它在未来一两年内不会过期。
(注意,在我最初的问题中,我可能给人的印象是Refresh Token只有几周的历史。这是不正确的。我的意思是,另一位不再在我公司工作的程序员在几年前创建了第一个代码项目并生成了Refresh Token,并将其保存在配置文件中。我使用了它,然后将代码从SOAP重写为HTTPREST,并使用了相同的Refresh T直到它终于停止工作。但后来我手动创建了一个新的刷新令牌,一切都很好。(