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