Мое клиентское приложение на iOS авторизует пользователя, получает токен доступа и токен обновления и отправляет его на мой сервер, где он хранится в базе данных.
Сервер подключается к календарю и получает события.
Проблема в том, что токен доступа не обновляется каким-либо образом с помощью токена обновления, и возвращается эта ошибка:
{
«ошибка»: «неавторизованный_клиент»,
«error_description»: «Unauthorized»}
public function sync($token, $expiresIn, $refreshToken, $created)
{
$client = new Google_Client();
$client->setApplicationName('Google Calendar Synchroniser');
$client->setScopes(Google_Service_Calendar::CALENDAR_READONLY);
$client->setAuthConfig('../client_secret_***************.apps.googleusercontent.com');
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
$client->setAccessToken(json_encode([
'access_token' => $token,
'created' => $created,
'expires_in' => $expiresIn,
'refresh_token' => $refreshToken
], true));
//create google calendar service
$service = new Google_Service_Calendar($client);
//filter for events searching
$calendarId = 'primary';
$optParams = array(
'maxResults' => 10,
'singleEvents' => true
);
//get events
$results = $service->events->listEvents($calendarId, $optParams);
}
Вы можете проверить это связанный пост SO об ответе «unauthorized_client
».
И помните, что вы должны предоставить доступ к своему приложению в панели управления вашего домена с помощью авторизация / делегирование вашей заявки чтобы избежать этой ошибки.
Других решений пока нет …