代码之家  ›  专栏  ›  技术社区  ›  Jaakko Uusitalo

从Azure AD获取用户

  •  2
  • Jaakko Uusitalo  · 技术社区  · 7 年前

    我不明白为什么我的循环根本不起作用。我已成功连接到我的客户端目录,并且能够获取一些用户。我遵循了 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'};
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Jaakko Uusitalo    7 年前

    好吧,我知道了。

    首先,我必须在实际令牌之前删除所有内容。

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

    然后在循环内使用新的 斯基普特肯 并按上述步骤执行:

    $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之外轻松调用的数组。