Google oAuth - Invalid_grant,获得了refresh_token但没有应用访问权限

时间:2015-07-19 09:59:56

标签: oauth google-adwords adwords-apiv201402

我需要你的帮助:

我正在使用Google AdWords API PHP库并将其集成到Symfony2中。我生成了获取Refresh_token的URL,它似乎工作正常,我收到刷新令牌。但每次我想访问API时,都会出现“invalid_grant”错误。

我检查了我的gMail-Test帐户,找不到我的应用程序。

这就是我的所作所为:

我生成了Access-URL,它运行正常:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=4160XXXXX-7j6qpXXXXXXXXXXXXkctXXX.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%2F%2Fadcheck%2Fweb%2Fapp_dev.php%2Fapp%2Ftoken%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fadwords&access_type=offline&approval_prompt=force

我点击它并接受它,以便我的“AdWords网络”应用可以访问和管理我的Google AdWords帐户。

然后,Google会将我重定向到我的Redirect_uri并发送refresh_token:

http://localhost/adcheck/web/app_dev.php/app/token/?code=4/ughxxxxxxxxxxxxxxxxxxxxxxxxxIZeF5yoMzI#

但“AdWords网络”应用未连接。我在Google帐户应用列表中找不到它,但我得到了一个成功的答案和刷新令牌。

任何人都可以提供帮助?我很无奈,找不到什么错误:/

1 个答案:

答案 0 :(得分:0)

好的,我发现了! Google不会返回刷新令牌。 Google会返回一个Access_token,然后可以用它来生成refresh_token。

 $AdWordsUser->SetOAuth2Info(
        $OAuth2Handler->GetAccessToken(
            $AdWordsUser->GetOAuth2Info(), $code, $redirectUri));
$AdWordsUser->SetRefreshToken($AdWordsUser->GetOAuth2Info('refresh_token'));

使用$ redirectUri

生成的Google生成的Access_token
$code = $this->get('request')get->('code');

当您第一次尝试通过访问令牌获取refresh_token时,Google会将其添加到"我的应用"您个人Google帐户上的网站。 :)