Google Adwords API "出现错误:{"error":“;invalid_g


Google Adwords API "An error has occurred: { "error" : "invalid_grant" }"

我整个上午都在上网,想弄清楚这个问题。我试图通过API访问Adwords测试帐户,但我不断收到"发生错误:{"错误":"invalid_grant"}"。我发现这是一个很常见的问题,所以如果我一步一步地概述我所做的事情,也许有人可以纠正我。希望!

  1. 创建Google adwords帐户并设置广告系列

  2. 创建MCC帐户。添加Google adwords账号,申请API访问权限(待定)。注意API密钥,auth.ini的客户端id

  3. 创建测试MCC账号并添加Google adwords账号。注意auth.ini的客户端id

  4. 使用两个MCC帐户的Google帐户进入API控制台并创建了一个新安装的应用程序应用程序。注意所有密钥/令牌

  5. 下载PHP代码示例和库。运行get GetRefreshToken.php,授予对应用程序的访问权限,并记录auth.ini

  6. 的刷新令牌
  7. 设置auth.ini填充developerToken, userAgent, clientCustomerId, client_id, client_secret和refresh_token

  8. 现在我已经尝试从测试MCC帐户API控制台和实时MCC帐户API控制台使用两组令牌和id。两者的误差都是一样的。我已经尝试了几次重新生成所有令牌。

  9. 放弃并爬向StackOverFlow

invalid_grant消息是否与Auth或我的developerToken令牌尚未激活相关(当然它说我可以使用我的测试帐户),或者因为我没有设置任何计费?

在我的情况下,问题是在你的清单的第5步;我在授予访问权限后从浏览器复制了授权代码,而不是在将授权代码粘贴到那里后由GetRefreshToken.php生成的刷新令牌。

同样的情况我已经有很长时间了。但解决办法很简单。

授权Google后获得的代码不是您的刷新令牌。它只是一个访问令牌(我猜)

您必须将此代码添加到GetAccessToken gettrefreshtoken .php文件中的$code变量函数中,它将返回实际的刷新令牌。

这解决了我的问题。

需要注意的是,SDK是为通过PHP-Cli使用而设计的。所以请不要通过浏览器使用它。如果你仍然通过注释掉return行来运行它,那么在每个文件上注释它就会遇到更多的问题:)