Я запрашиваю доступ к данным пользователя из приложения 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
не изменились. Это те же самые, которые работали ранее для получения контактов пользователя, событий календаря и т. Д., Когда токен доступа еще не истек.
Что может быть причиной этой ошибки?