尽管使用了刷新令牌,但 Google Ads API 仍显示“令牌已过期或撤销”
Posted
技术标签:
【中文标题】尽管使用了刷新令牌,但 Google Ads API 仍显示“令牌已过期或撤销”【英文标题】:Google Ads API says "Token has been expired or revoked" despite using a refresh token 【发布时间】:2021-02-10 14:34:34 【问题描述】:我在这里根据本手册设置了整个 Google Ads API:https://developers.google.com/google-ads/api/docs/client-libs/python/oauth-desktop?hl=en
我获得了刷新令牌并将其放入我的 google-ads.yaml 文件中,该文件看起来完全像这样: https://github.com/googleads/google-ads-python/blob/master/google-ads.yaml。我还将我的 client_id、developer_token 和 client_secret 放在文件中的相应位置。
一切顺利,例如,我可以要求所有广告系列: https://developers.google.com/google-ads/api/docs/samples/get-campaigns#python。我也可以使用 API 的其他服务。
每次我使用 API 时,我都会使用以下代码通过客户端访问它:
from google.ads.google_ads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(path_to_google_ads_yaml_file)
正如我已经说过的那样,它有效。
几天后我再次尝试连接并收到以下错误:
“error”: “invalid_grant”, “error_description”: “Token has been expired or revoked.”
所以我再次获得了一个新的刷新令牌 (https://developers.google.com/google-ads/api/docs/client-libs/python/oauth-desktop?hl=en),这样一切都恢复了。
一天后我又遇到了同样的错误。所以我的问题是:刷新令牌的目的是什么?我认为它允许我访问 API 而无需请求新令牌或刷新令牌!?
现在,我再次尝试连接到 API(尽管上次没有工作),但现在我遇到了一个更糟糕的新错误:
'invalid_grant: Bad Request', '\n "error": "invalid_grant",\n "error_description": "Bad Request"\n'
所以事情变得更加复杂......
【问题讨论】:
我遇到了同样的问题,即使我已经刷新了令牌,但现在不起作用。它之前是工作文件 面临同样的问题并回答了我自己的问题:***.com/questions/66240374/… 【参考方案1】:正如@fatima Ajij 指出的那样,整个问题/问题在于设置: 看看他的回答: Token has expired or revoked - Google Ads 非常感谢,法蒂玛·阿吉!
【讨论】:
应用程序不需要被“发布”以保持刷新令牌。处于“测试”模式的应用程序的行为应与“生产”应用程序相同(用户数量有限除外)。 如果这个解决方案是真的,这肯定是谷歌需要修复的错误?以上是关于尽管使用了刷新令牌,但 Google Ads API 仍显示“令牌已过期或撤销”的主要内容,如果未能解决你的问题,请参考以下文章