1

我知道这个问题之前已经发布过。但他们都没有答案。所以我重新发布这个问题。我正在尝试获取分析数据。但在验证后,我收到访问令牌的“invalid_grant”错误。现在我有相同的代码工作了大约 3 个月,现在突然之间我遇到了这个问题。我已将刷新令牌保存在数据库中,并使用它来获取访问令牌。请求令牌是否有可能过期?请帮忙!

$oauth2token_url    =   "https://accounts.google.com/o/oauth2/token";
$clienttoken_post   =   array(
                        "client_id" => $client_id,
                        "client_secret" => $client_secret,
                        "refresh_token" => $refreshToken,
                        "grant_type"    => 'refresh_token'
                    );

$authObj        =   getAccessToken($oauth2token_url, $clienttoken_post);

function getAccessToken($oauth2token_url, $clienttoken_post){

    $curl = curl_init($oauth2token_url);

    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $clienttoken_post);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $json_response = curl_exec($curl);
    curl_close($curl);

    $authObj = json_decode($json_response);

    return $authObj;
}

令牌响应:****************** is - stdClass Object ( [error] => invalid_grant )

4

1 回答 1

2

行。我想通了。问题是当用户授予应用程序权限时,刷新令牌会被刷新。因此,如果用户授予权限(第 2 次),则第一次刷新令牌(您已保存在数据库或任何地方)将被刷新。您所要做的就是在每次获得许可时更新刷新令牌。

于 2012-09-20T05:50:28.573 回答