使用 PHP 客户端库获取 Google 应用帐户的所有用户

Get All Users of Google Apps Account Using PHP Client Library

我目前正在尝试获取域内所有用户的列表,我使用的逻辑如下:

$service = new Google_Service_Directory($client);

$optParams = array(
    'customer' => 'my_customer',
    'maxResults' => 500,
    'orderBy' => 'email',
    );

$results = $service->users->listUsers($optParams);
$users = $results->getUsers();

    foreach($users as $user) {
    $usersemails = $user->getPrimaryEmail();
    echo $usersemails.'<br>';
   }

问题是我最多只能获得 500 个用户。我发现我必须使用下一页标记,所以我尝试了这个:

$service = new Google_Service_Directory($client);

$optParams = array(
  'customer' => 'my_customer',
  'maxResults' => 500,
  'orderBy' => 'email',
  'pageToken' => NULL,
);

$results = $service->users->listUsers($optParams);
$pageToken = $results->getNextPageToken();
$users = $results->getUsers();

while($pageToken); 

  foreach($users as $user) {
    $usersemails = $user->getPrimaryEmail();
    echo $usersemails.'<br>';
}

但我收到以下消息:

504 Gateway Time-out. The server didn't respond in time.

我使用的代码有问题还是服务器有问题?

检查了很多次,我才发现问题是我没有正确编写代码。我修改了我的代码,现在它工作正常。如果其他人遇到同样的问题,这可能会有所帮助。这是最终代码:

$service = new Google_Service_Directory($client);

$pageToken = NULL;
$optParams = array(
  'customer' => 'my_customer'
);

try {
  do {
    if ($pageToken){
    $optParams['pageToken'] = $pageToken;   
  }

$results = $service->users->listUsers($optParams);
$pageToken = $results->getNextPageToken();
$users = $results->getUsers();

foreach($users as $user) {
  $usersemails = $user->getPrimaryEmail();
  echo $usersemails.'<br>';
}

} while($pageToken); 

} catch (Exception $e) {
    print 'An error occurred: ' . $e->getMessage();
}