gpt4 book ai didi

php - 刷新 oauth2 token google api 和 HWIOAuthBundle

转载 作者:可可西里 更新时间:2023-10-31 22:52:15 25 4
gpt4 key购买 nike

我如何刷新 token ?我将 Google api 与此 token 一起使用 - 它可以工作但找不到如何刷新它,在此示例中我们不保存过期时间。我需要

`access_type:     offline `

然后

$client = new Google_Client();
//$client->setClientId($GoogleClientId);
$client->setApplicationName($GoogleAppName);
$client->setClientId($this->user->getGoogleId());
$client->setAccessType('offline');

如果 token 有效我可以工作但是当过期我尝试

$token = [
'access_token' => $this->user->getGoogleAccessToken(),
'expires_in' => (new \DateTime())->modify('-1 year')->getTimestamp(),
];

我把它放在任何日期因为在这个例子中我们不保存过期时间

https://gist.github.com/danvbe/4476697

    $client->setAccessToken($token);

if($client->isAccessTokenExpired()){

$refreshedToken = $client->refreshToken($client->getAccessToken());

这里有错误

array:2 [▼
"error" => "invalid_request"
"error_description" => "Could not determine client ID from request."
]

有刷新token的HwiAuthBundle方法吗?为什么这不适用于 Google_Client 刷新?

最佳答案

在 oauth2.0 中刷新您需要发送到端点的过期访问 token :

  • 授予类型等于“refresh_token”
  • 一个有效的refreshToken
  • 您的客户编号
  • 和你的clientSecret

您不能发送过期的 accessToken 来获取新的刷新的 accessToken。

public function refreshAccessToken($refreshToken, array $extraParameters = array())
{
$parameters = array_merge(array(
'refresh_token' => $refreshToken,
'grant_type' => 'refresh_token',
'client_id' => $this->options['client_id'],
'client_secret' => $this->options['client_secret'],
), $extraParameters);
$response = $this->doGetTokenRequest($this->options['access_token_url'], $parameters);
$response = $this->getResponseContent($response);
$this->validateResponseContent($response);
return $response;
}

函数refreshAccessToken($refreshToken, ...

而不是 $accessToken

我认为你需要在使用你的凭据构建你的客户端之后调用

$client = new Google_Client();
$client->setAuthConfig('client_secrets.json');
$client->refreshToken($client->getRefreshToken());

https://developers.google.com/api-client-library/php/auth/web-app#creatingcred

你确定你的 $client->setClientId($this->user->getGoogleId()); 吗?什么是 getGoogleId() ?我认为您还需要创建一个 oauth 客户端 ID: https://developers.google.com/identity/sign-in/web/devconsole-project

在 oauth 中,client_id 不是用户 ID 而是应用程序 ID

关于php - 刷新 oauth2 token google api 和 HWIOAuthBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40523329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com