Исключение синхронизации токенов google-api-client-service php people Сервис

У меня проблема с Google API. Мне нужно получить все контакты пользователя в моем приложении, однако я не хочу загружать все данные каждый раз, потому что я храню данные в своей базе данных.

Вот почему я хочу использовать функциональность Sync Token, которая позволяет нам получать только данные, которые были изменены с момента нашего последнего запроса.

Для этого я использую Клиентская библиотека PHP API Google.

Я написал свой код, и он выдает исключение (Google_Service_Exception), которое объясняет, что мой токен синхронизации больше недействителен, поэтому я решил использовать систему try / catch для сброса syncToken, если он недействителен.

Моя проблема заключается в том, что каждый раз, когда я отправляю запрос, который я ввожу в подвох (google_service_exception), поднимается, даже если мой токен действителен.

Я храню токен в своей базе данных, поэтому я протестировал его в проводнике API здесь: https://developers.google.com/people/api/rest/v1/people.connections/list и это работает нормально, поэтому я не понимаю, почему мое приложение не работает должным образом.

Вот мой код:

    $personFields = 'metadata,names,addresses,biographies,birthdays,emailAddresses,genders,memberships,organizations,phoneNumbers';
$user = $this->get('security.token_storage')->getToken()->getUser();
$syncToken = $user->getContactSyncToken();
$nextPagetoken = '';
$contactData = array();

$people_service = new \Google_Service_PeopleService($client);

do {

try {
$data = $people_service->people_connections->listPeopleConnections(
'people/me',
array(
'personFields' => $personFields,
'requestSyncToken' => true,
'syncToken' => $syncToken,
'pageToken' => $nextPagetoken,

)
);
}catch (\Google_Service_Exception $e){
$data = $people_service->people_connections->listPeopleConnections(
'people/me',
array(
'personFields' => $personFields,
'requestSyncToken' => true,
'syncToken' => '',
'pageToken' => $nextPagetoken,

)
);
}finally{
$syncToken = $data->getNextSyncToken();
$nextPagetoken = $data->getNextPageToken();
if (count($data->getConnections()) != 0) {
$contactData[] = $data->getConnections();
}
}}while ($nextPagetoken !== null);

$user->setContactSyncToken($syncToken);
$this->getDoctrine()->getManager()->flush();
return $contactData;

Спасибо за вашу помощь и извините за мой английский, я не родной и не очень хорош в этом.

0

Решение

Извините, я нашел проблему, в моем классе пользователя у меня было:

public function getContactSyncToken()
{

if($token = $this->contactSyncToken  !== null){
return $token;
}else{
return '';
}
}

И он всегда возвращает », теперь он работает с:

public function getContactSyncToken()
{
$token = $this->contactSyncToken;
if($token  !== null){
return $token;
}else{
return '';
}}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]