gpt4 book ai didi

php - 从 Azure AD 获取用户

转载 作者:行者123 更新时间:2023-12-02 07:09:24 25 4
gpt4 key购买 nike

我不明白为什么我的循环根本不起作用。我已成功连接到我的客户目录,并且能够获取一些用户。我已经关注了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'};

最佳答案

好吧,我明白了。

首先,我必须删除实际 token 之前的所有内容。

$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" 是否存在,我可以轻松停止 while 循环,因为最后一页不包含 'odata.nextLink'

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

我将每个 100 个用户数组附加到另​​一个数组,我可以在 PHP 之外轻松调用它。

关于php - 从 Azure AD 获取用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47919435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com