从 Azure AD 中获取用户
Fetch users from Azure AD
我不明白为什么我的循环根本不工作。我已成功连接到我的客户目录,并且能够获取一些用户。我已经关注了PHP instructions。但是本教程不包含仅获取所有用户的示例,默认页面大小为 100 个用户。
我知道 skipToken (explained here),但出于某种原因,我无法在我的循环中使用它。
基本上我先定义一个数组,然后定义两个子数组。
$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'};
好的,我明白了。
首先,我必须删除实际令牌之前的所有内容。
$skipToken = $users->{'odata.nextLink'};
$skipToken = substr($skipToken, strpos($skipToken, "=") + 1);
然后在循环中使用 get new 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"
是否存在,我可以轻松地停止 while 循环,因为 lastpage 不包含 'odata.nextLink'
.
if(isset($new->{'odata.nextLink'})){
$skipToken = empty($new->{'odata.nextLink'});
} else{
break;
}
我将每个 100 个用户数组附加到另一个数组,我可以轻松调用它在 PHP 之外使用它。
我不明白为什么我的循环根本不工作。我已成功连接到我的客户目录,并且能够获取一些用户。我已经关注了PHP instructions。但是本教程不包含仅获取所有用户的示例,默认页面大小为 100 个用户。
我知道 skipToken (explained here),但出于某种原因,我无法在我的循环中使用它。
基本上我先定义一个数组,然后定义两个子数组。
$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'};
好的,我明白了。
首先,我必须删除实际令牌之前的所有内容。
$skipToken = $users->{'odata.nextLink'};
$skipToken = substr($skipToken, strpos($skipToken, "=") + 1);
然后在循环中使用 get new 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"
是否存在,我可以轻松地停止 while 循环,因为 lastpage 不包含 'odata.nextLink'
.
if(isset($new->{'odata.nextLink'})){
$skipToken = empty($new->{'odata.nextLink'});
} else{
break;
}
我将每个 100 个用户数组附加到另一个数组,我可以轻松调用它在 PHP 之外使用它。