我正在尝试使用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是否有更好的文档?
答案 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)