gpt4 book ai didi

php - "unauthorized_client"使用 PHP 客户端通过 Google API 客户端刷新 token 时出错?

转载 作者:行者123 更新时间:2023-12-01 22:10:18 25 4
gpt4 key购买 nike

我正在使用 GoogleSignIn pod 中的此代码请求从 IOS 应用程序访问用户数据

 [GIDSignIn sharedInstance].uiDelegate = self;
[[GIDSignIn sharedInstance] setScopes:@[ ... ];
[[GIDSignIn sharedInstance] signInSilently];

然后,我在 appDelegate 中接收 accessToken 和 refreshToken 并将其发送到运行 PHP 并使用此 google 客户端库 ( https://github.com/googleapis/google-api-php-client) 的服务器……第一个小时一切正常,访问 token 有效并允许我访问所有范围。然后一小时后访问 token 过期,我尝试使用此代码刷新它
$client = new Google_Client();
$client->setApplicationName(<app name>);
$client->setDeveloperKey(<google_oauth_developer_key>);
$client->setClientSecret(<google_oauth_client_secret>);
$client->setClientId(<google_oauth_client_id>);
$client->refreshToken("1/12ju3ZZim-r6co195lIVNNvzBq9x5G64GJCWkYsOQ18");

并且上面的“refreshToken”函数返回这个错误
=> [
"error" => "unauthorized_client",
"error_description" => "Unauthorized",
]

值得注意的是 app name , google_oauth_developer_key , google_oauth_client_secret , 和 google_oauth_client_id没有改变。当访问 token 尚未过期时,它们与之前用于检索用户联系人、日历事件等的相同。

什么可能导致此错误?

最佳答案

您需要在某个时候实际使用您的刷新 token 。

if ($client->isAccessTokenExpired()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
$client->getAccessToken();

从我的 Oauth2Authentication.php 中窃取的代码样本

备注

还要记住刷新 token 是基于用户/客户端的。因此,如果 token 是由一个客户端生成的,那么另一个客户端可能无法使用它。如果您可以在 php 应用程序中使用在 Ios 代码中创建的刷新 token ,我会感到非常惊讶。客户类型不同。

关于php - "unauthorized_client"使用 PHP 客户端通过 Google API 客户端刷新 token 时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54195555/

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