Google API에 문제가 있습니다. 내 응용 프로그램에서 사용자의 모든 연락처를 가져올 필요가 있지만 데이터베이스에 데이터를 저장하기 때문에 매번 모든 데이터를로드하고 싶지는 않습니다.동기화 토큰 예외 google-api-client-service php people 서비스
우리가 마지막 쿼리 이후 변경된 데이터 만 가져 오는 동기화 토큰 기능을 사용하고자하는 이유입니다.
여기서는 Google APIs PHP client library을 사용합니다.
코드를 작성했는데 내 동기화 토큰이 유효하지 않다는 것을 설명하는 예외 (Google_Service_Exception)가 발생하므로 유효하지 않은 경우 try/catch 시스템을 사용하여 syncToken을 재설정하기로 결정했습니다.
내 문제는 내 토큰이 유효하더라도 catch (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;
여러분의 도움에 감사드립니다 내 영어 죄송합니다 내가 네이티브가 아니라 그것에 아주 좋은 아니에요 :
여기 내 코드입니다. 내가 문제를 발견