createRequest返回数组而不是类

时间:2019-03-26 08:14:48

标签: microsoft-graph microsoft-graph-sdks

我正在尝试使用Microsoft Graph Library for PHP检索有关用户的信息。

但是此代码遇到错误Trying to get property 'getGivenName' of non-object

$user = $graph->createRequest("GET", "/users")
              ->setReturnType(Model\User::class)
              ->execute();

这是由于$user是一个数组而不是对象! SDK(或我的代码)怎么了?

SDK是否有更好的文档?

1 个答案:

答案 0 :(得分:0)

  

这是由于以下事实:$ user是数组而不是对象!?

是的,因为endpoint GET Users返回用户列表,在提供的示例中:

 $users = $graph->createRequest("GET", "/users")
        ->setReturnType(\Microsoft\Graph\Model\User::class)
        ->execute();

$users包含一组Microsoft\Graph\Model\User type对象,并且

 $givenName = $users[0]->getGivenName();  

赋予数组中第一项GivenName属性。

可以通过GET /users/{id | userPrincipalName} endpoint请求特定用户:

   $user = $graph->createRequest("GET", "/users/{$userId}")
        ->setReturnType(\Microsoft\Graph\Model\User::class)
        ->execute();

在这种情况下,$user对象属于Microsoft\Graph\Model\User type

   $givenName = $user->getGivenName();

更新

setReturnType函数接受Microsoft Graph API实体类型名称,在您的示例中,显示Model\User指向不属于Microsoft\Graph\Model命名空间的类型,因此JSON响应不正确反序列化到类实例中。

代替

setReturnType(Model\User::class)

尝试指定完全合格的类名称:

setReturnType(\Microsoft\Graph\Model\User::class)