4

My goal is to make the simplest query on Google Fusion Tables on behalf of my web app users. For that, I created a service account on google console. Here is the code:

    // Creating a google client
    $client = new \Google_Client();


    // setting the service acount credentials
    $serviceAccountName = 'XXXXX.apps.googleusercontent.com';
    $scopes= array(
                'https://www.googleapis.com/auth/fusiontables',
                'https://www.googleapis.com/auth/fusiontables.readonly',
                );
    $privateKey=file_get_contents('/path/to/privatekey.p12');
    $privateKeyPassword='notasecret'; // the default one when generated in the console

    $credential = new \Google_Auth_AssertionCredentials($serviceAccountName,
            $scopes, $privateKey, $privateKeyPassword);

    // setting assertion credentials
    $client->setAssertionCredentials($credential);

    $service = new \Google_Service_Fusiontables($client);
    $sql = 'select name from XXXXXXXX'; 
    $result = $service->query->sql($sql);

After running this code, I got this error:

Error refreshing the OAuth2 token, message: '{
"error" : "invalid_grant"
}'

I googled that for days and most of answers are talking about refreshing the token. I made this refresh but still the same errors!

Any idea for solving this problem? Thanks

4

3 回答 3

11

在我的情况下,这是由于服务器的时间太远(大约 5 分钟)造成的。

虽然您的问题已经解决,但也许这对将来登陆这里的人有任何帮助,因为谷歌返回的错误是相同的。

于 2014-09-08T14:12:19.377 回答
9

我知道很多人都面临着和我一样的问题。所以,这是在谷歌搜索几天后的解决方案。

我提出的代码只有一个错误:client id is like an email类似于123456789-abcdebsbjf@developer.gserviceaccount.com

您要做的第二件事是将您在谷歌融合表中查询的表与服务帐户的客户端 ID 共享。

在那之后,事情就会完美地工作。

我希望这对其他人有帮助。

于 2014-07-12T13:21:14.780 回答
0

我在谷歌分析 API 中遇到了同样的错误,我已经通过添加我Service accounts Email address谷歌分析帐户来解决它。

于 2015-08-21T05:54:23.213 回答