使用Google Oauth,我收到了此错误:
未捕获的例外' Google_Auth_Exception'消息'令牌使用太晚,1410345101> 1410341783:
昨天代码工作正常,但今天它不想再开始并给我错误。我的部分代码:
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
我认为这是我必须更改代码才能工作的地方。
更多代码:
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
} else {
$authUrl = $client->createAuthUrl();
}
if ($client->getAccessToken()) {
$_SESSION['access_token'] = $client->getAccessToken();
$token_data = $client->verifyIdToken()->getAttributes();
}
答案 0 :(得分:3)
令牌已过期。 您应该使用刷新令牌或再次登录来获取新令牌。
这就是消息所说的“令牌太晚了,1410345101> 1410341783:”
'现在'毫秒大于令牌到期毫秒。
答案 1 :(得分:1)
访问令牌将在3600秒后到期,这在令牌响应(参数expires_in
)中指示。
{
" access_token":" ya29.fQCQfvMjEu9fo6T45 ********* NfUoxILuk-SPa0puDawVssOss0sP0", " token_type":" Bearer",
" expires_in":3600,
" refresh_token":" 1 / er3tmjZUUmXtr ******** JoJDDopM_xMww"
}
成功完成OAuth 2授权代码流后,您将获得刷新令牌。此刷新令牌永不过期,您可以通过向Google OAuth 2.0授权服务器发送刷新令牌来获取新的访问令牌。