Я запрашиваю доступ к данным пользователя из приложения IOS, используя этот код из модуля GoogleSignIn.
[GIDSignIn sharedInstance].uiDelegate = self;
[[GIDSignIn sharedInstance] setScopes:@[ ... ];
[[GIDSignIn sharedInstance] signInSilently];
Затем я получаю accessToken и refreshToken в appDelegate и отправляю их на сервер, на котором запущен PHP и использует эту клиентскую библиотеку Google (https://github.com/googleapis/google-api-php-client) ... в течение первого часа все работает нормально, и токен доступа действителен и разрешает мне доступ во все области. Затем через час токен доступа истекает, и я пытаюсь обновить его с помощью этого кода.
$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 не изменились. Это те же самые, которые раньше работали для получения контактов пользователя, событий календаря и т. Д., Когда токен доступа еще не истек.
Что могло быть причиной этой ошибки?