Fetch users from Azure AD

Обновить

November 2018

Просмотры

202 раз

2

Я не могу понять, почему мой цикл не работает вообще. Я успешно подключен к моему каталогу клиентов , и я могу принести некоторые пользователей. Я следовал инструкциям PHP . Но это руководство не включает в себя пример для выборки всех пользователей только размером 100 пользователей страницы по умолчанию.

Я отдаю себе отчет в skipToken ( описано здесь ) , но по какой - то причине я не мог заставить его работать с моим контуром.

В принципе первый я определить массив, и два вспомогательных массивов.

 $myArray = array();
 $myArray['skipToken'] = "";
 $myArray['users'] = "";

Тогда я буду выполнять первые выборки, так что я могу получить skipToken и кучу пользователей, которые приходят вместе.

 require_once("GraphServiceAccessHelper.php");
 $users = GraphServiceAccessHelper::getFeed('users');

Нажимать значения в уже существующих массивов.

 $myArray['skipToken'] = $users->{'odata.nextLink'};
 $myArray['users'][] = $users->{'value'};

Сейчас они заполнены информацией. Теперь пришло время цикла!

 for($i = 0; $i < 2; $i++){
    if($myArray['skipToken'] != ""){
      $skipToken = $myArray['skipToken'];
      require_once("GraphServiceAccessHelper.php");
      $users = GraphServiceAccessHelper::getNextFeed('users', $skipToken);
      $myArray['skipToken'] = $users->{'odata.nextLink'};
      $myArray['users'][] = $users->{'value'};
    }
 }

Консольные разжигает от ошибки, которая указывает на цикл skipToken определяющей части:

Notice: Undefined property: stdClass::$odata.nextLink

$myArray['skipToken'] = $users->{'odata.nextLink'};

1 ответы

1

Хорошо, я понял.

Сначала я должен был удалить все до фактических маркеров.

$skipToken = $users->{'odata.nextLink'};
$skipToken = substr($skipToken, strpos($skipToken, "=") + 1);

Тогда внутри использования петли , которые получают новый skipToken и сделать то же самое , как и выше:

$new = GraphServiceAccessHelper::getNextFeed('users', $skipToken);
if(isset($new->{'odata.nextLink'})){
  $skipToken = empty($new->{'odata.nextLink'});
} else{
  break;
}
$skipToken = substr($skipToken, strpos($skipToken, "=") + 1);
$myArray['tokens'] = $skipToken;
$myArray['users'][] = $new->{'value'};

При проверке , если 'odata.nextLink"существует , я могу легко остановить время цикла , так как LastPage не содержит 'odata.nextLink'.

if(isset($new->{'odata.nextLink'})){
  $skipToken = empty($new->{'odata.nextLink'});
} else{
  break;
}

Я присоединяя каждый массив 100 пользователей в другой массив, который я могу назвать легко использовать его вне PHP.